Powershell全局范围,具有并发脚本执行功能

时间:2017-03-31 13:22:09

标签: powershell scope

我正在编写一个脚本,用于从用户提供的服务器列表中关闭和启动VM。

在一个函数中,我验证服务器是否存在于我们的环境中,并且需要跟踪我在数组中实际关闭的好服务器。为了解决这个数组变量的范围问题,我将把它变为全局,但是我想知道如果多个用户同时从同一个服务器运行这个脚本,是否会影响全局变量,因为我知道它会是在shell的范围内。

我试图运行脚本级范围,但它似乎对我没有用。有谁知道全局是否会在这种情况下引起问题?

例如:

$powerOn = [System.Collections.ArrayList]@()
foreach ($server in $servers){
      powerOff($server)
}

Function powerOff($name){
      #Code to check if server exists
      #if exists
      $Global:powerOn.add($name)
}

1 个答案:

答案 0 :(得分:0)

每次引用非局部变量时都需要包含范围:

$Global:powerOn = [System.Collections.ArrayList]@()
foreach ($server in $servers){
      powerOff($server)
}

Function powerOff($name){
      #Code to check if server exists
      #if exists
      $Global:powerOn.add($name)
}

如果您愿意,还应该允许您使用script范围。