2017-03-31 131 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範圍」寧可。