我正在编写一个脚本,用于从用户提供的服务器列表中关闭和启动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)
}
答案 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
范围。