为什么我不能将全局变量用作函数的参数....
function Get-Diskinfo
{param($global:Computername)
get-WmiObject win32_logicaldisk -ComputerName $global:Computername}
我需要在其他脚本的函数中重用该变量。
答案 0 :(得分:4)
在param块中,您可以定义函数所具有的参数的名称(以及默认值和其他元数据)。 $ global:不能用作参数名,因为它定义了变量的范围。由于你没有定义变量,所以没有任何意义。
你想让你的函数有一个computername参数并给它一个全局变量的默认值吗?然后你可以做到以下几点。
function Get-Diskinfo {param($Computername = $global:Computername)
get-WmiObject win32_logicaldisk -ComputerName $Computername}
如果你不关心参数并且总是想要使用全局变量,你可以完全删除param。
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