在PowerShell函数中解释变量/数组作用域。
通常,当变量在脚本中声明为Public变量或在函数外部(而不是在任何其他变量或条件中)时,您无需将该值传递给函数,因为当在调用函数之前先初始化变量。
示例
function PrintOut{Write-Output "your Name is : $name"
}
$name = Read-Host "Enter your Name"
PrintOut
在上面的示例中,$name变量在名为PrintOut的函数外部声明。因此,由于可以在函数内部读取变量,因此可以按其名称直接使用变量。
输出结果
Enter your Name: PowerShellyour Name is : PowerShell
相反,如果在内部声明了$name变量,并且在函数外部检查了输出,则不会获得该变量的值。
示例
function PrintOut{$name = Read-Host "Enter your Name"
}
PrintOut
Write-Output "your Name is : $name"
输出结果
Enter your Name: PowerShellyour Name is :
您可以在上面的输出中看到$Name的值为NULL,因为在函数中声明了$name。
另一方面,如果在函数外部声明了变量或数组,并且在函数内部修改了变量或数组的值,则不会在函数外部反映出来。
示例
function PrintOut{$name = Read-Host "Enter your Name"
Write-Output "Name inside function : $name"
}
$name = "Alpha"
PrintOut
Write-Output "Name after calling function : $name"
输出结果
Enter your Name: PowerShellName inside function : PowerShell
Name after calling function : Alpha
正如我们在此处观察到的那样,$name变量值在函数内部更改,但由于其作用域有限,因此不能反映函数的外部。
同样,对于数组,
$services = @()function Automatic5Servc{
$services = Get-Service | Where{$_.StartType -eq "Automatic"} | Select -First 5
}
Automatic5Servc
Write-Output "Automatic Services : $services"
在上面的代码中,由于Services数组变量的值为null并且函数无法更新原始变量,因此您不会获得服务信息。
以上是 在PowerShell函数中解释变量/数组作用域。 的全部内容, 来源链接: utcz.com/z/316926.html