我有一个脚本,其中包含一个函数,用于定义其中的一些变量以供日后使用。例如,它看起来像这样:
$Rig = "TestRig1"
Function Setup{
If ($Rig -eq "TestRig1") {
$Script:Server="Alpharius"
$Script:IIS1="Tactical"
$Script:IIS2="Assault"
}
}
Setup
<do things with $Server>
(这不是实际的脚本,但它类似)
我很好奇的是,如果有更好的方法来记录这一点,而不是单独用它们的范围标记每个变量。有什么方法可以说明函数中声明的所有变量都是脚本范围?
答案 0 :(得分:5)
一种选择是通过点源来运行本地范围内的功能:
$Rig = "TestRig1"
Function Setup{
If ($Rig -eq "TestRig1") {
$Server="Alpharius"
$IIS1="Tactical"
$IIS2="Assault"
}
}
. Setup
<do things with $Server>
注意“设置”之前的点和空格。 - 空间必须在那里。这将在当前作用域中运行该函数,并在那里创建变量。请确保它们不会与范围内已有的任何现有变量名冲突。
另一种选择是使用哈希表:
$Rig = "TestRig1"
$RigParams = @{}
Function Setup{
If ($Rig -eq "TestRig1") {
$RigParams.Server="Alpharius"
$RigParams.IIS1="Tactical"
$RigParams.IIS2="Assault"
}
}
Setup
<do things with $RigParams.Server>
该函数将更新父作用域中的哈希表键,而不是在函数作用域中创建新变量。