2016-11-30 48 views
0

我有一個VM維護腳本,我正在處理,並且正在嘗試將輸出捕獲到日誌中。我希望隨着腳本的進展收集虛擬機的狀態,所以我可以使用我的定時循環進行一些微調以進行檢查/操作。多個PowerShell變量在輸出行中出現空白

我的問題是我的代碼如下。寫入輸出行中的第一個和第二個VM狀態變量在我的輸出中始終顯示爲空白,但在分開放置時會很好地工作。

$Server_1_1D = Get-VMGuest -VM 1st-VM 
$Server_2_1D = Get-VMGuest -VM 2nd-VM 
$Server_3_1D = Get-VMGuest -VM 3rd-VM 
$Server_1_1D_Name = $Server_1_1D.VmName 
$Server_2_1D_Name = $Server_2_1D.VmName 
$Server_3_1D_Name = $Server_3_1D.VmName 
$Server1_1D_Status = $Server_1_1D.State 
$Server2_1D_Status = $Server_2_1D.State 
$Server3_1D_Status = $Server_3_1D.State 
$Server1_1D_Status 
$Server2_1D_Status 
$Server3_1D_Status 
Write-Output "Initial check: $Server_1_1D_Name was $Server_1_1D_Status, $Server_2_1D_Name was $Server_2_1D_Status, and $Server_3_1D_Name was $Server3_1D_Status." 
$Server1_1D_Status 
$Server2_1D_Status 

上述代碼的輸出。在Write-Output行中,1st-VM和2nd-VM都缺少它們的狀態變量,但是第3個VM始終顯示出來,無論它們放置在寫入輸出行中的位置和數量如何:

PS C:\> C:\Scripted_Tasks\Issue.ps1 
Running 
Running 
Running 
Initial check: 1st-VM was , 2nd-VM was , and 3rd-VM was Running 
Running 
Running 

任何幫助或方向是非常感謝。

更新2016年12月1日:什麼工作

擺脫了我的變量名,並開始了沒有下劃線。在Write-Output上得到朋友的一些幫助,以及如何使用括號來調用不同的屬性。更乾淨。

感謝您的回覆。

$Server1 = Get-VMGuest -VM 「Server1」 
$Server2 = Get-VMGuest -VM 「Server2」 
$Server3 = Get-VMGuest –VM 「Server3」 
Write-Output "Initial check: $($Server1.VmName) was $($Server1.State), $($Server2.VmName) was $($Server2.State), and $($Server3.VmName) was $($Server3.State)." 

PowerShell的輸出現在是:

Initial check: Server1 was Running, Server2 was Running, and Server3 was Running. 
+3

'$ server1_'在你的字符串中的變量名和'$ server_1_'中。 – TessellatingHeckler

回答

0

看來,你在哪裏定義的變量,你必須:

$ Server1_,$ Server2_,$ Server3_

當您調用變量輸出它時,您正在調用:

$ Server_1_,$ Server_2_,$ Server_3_

號碼前添加一個額外的_。

實際上,您正在調用尚未定義的完全不同的變量。

+0

感謝您的協助。我從一個朋友那裏得到了一些進一步的幫助,他通過爲名稱和狀態做$($ Server1.property)給了我一個更清晰的寫輸出。 – Tim