簡體   English   中英

用全局變量參數化的函數

[英]Function parameterized with global variable

為什么我不能使用全局變量作為函數的參數...。

function Get-Diskinfo
{param($global:Computername) get-WmiObject win32_logicaldisk -ComputerName $global:Computername}

我需要在其他腳本的函數中重用該變量。

在參數塊中,定義函數具有的參數的名稱(以及默認值和其他元數據)。 $ global:不能用作參數名稱,因為它定義了變量的范圍。 由於您沒有定義變量,因此沒有任何意義。

您是否希望函數具有computername參數,並為其提供全局變量的默認值? 然后,您可以執行以下操作。

function Get-Diskinfo {param($Computername = $global:Computername) 
   get-WmiObject win32_logicaldisk -ComputerName $Computername}

如果您不關心參數,並且始終想使用全局變量,則可以完全刪除參數。

function Get-Diskinfo {
   get-WmiObject win32_logicaldisk -ComputerName $global:Computername}

我通常不會建議上述解決方案。 我發現最好不要使用像這樣的全局變量,而讓下面的腳本調用不同的函數。 這使代碼對於任何閱讀或調試它的人來說都更易於理解。 全局變量使代碼難以理解,容易出錯並且難以重用。

沒有任何全局變量的函數

function Get-Diskinfo {param($Computername) 
   get-WmiObject win32_logicaldisk -ComputerName $Computername}

腳本為同一台計算機調用不同的功能

$MyComputerName = 'client01'
Get-DiskInfo -ComputerName $MyComputerName
Get-MoreInfo -ComputerName $MyComputerName
Get-OtherInfo -ComputerName $MyComputerName

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM