2017-03-31 156 views
0

我正在编写一个脚本,用于从用户提供的服务器列表中关闭并打开VM的电源。Powershell Global并发脚本执行范围

在函数中,我验证服务器是否存在于我们的环境中,并且需要跟踪实际上在阵列中关闭的优质服务器。为了解决这个数组变量的范围问题,我打算让它成为全局变量,但是我想知道如果多个用户同时从同一个服务器上运行这个脚本,是否会影响一个全局变量,因为我知道它会是在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) 
} 

回答

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范围”宁可。