Powershell变量范围

肖恩·朗(Sean Long)

我有一个脚本,其中包含一个函数,该函数在其中定义了一些变量以供以后使用。例如,它看起来像这样:

$Rig = "TestRig1"

    Function Setup{
       If ($Rig -eq "TestRig1") {
           $Script:Server="Alpharius"
           $Script:IIS1="Tactical"
           $Script:IIS2="Assault"
       }
    }

Setup
<do things with $Server>

(这不是实际的脚本,但是类似)

我很好奇的是,有没有一种更好的方法来记录这一点,而不是用它们的范围分别标记每个变量。我可以通过某种方式声明一个函数中声明的所有变量都是脚本范围的吗?

Mjolinor

一种选择是通过点源购买在本地范围内运行该功能:

$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>

该函数将在父范围内更新哈希表键,而不是在函数范围内创建新变量。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章