私が作業しているVM保守スクリプトがあり、出力をログにキャプチャしようとしています。スクリプトの進行に合わせてVMの状態を収集することを検討していますので、チェック/アクションのためのタイムループを使って微調整を行うことができます。複数のPowerShell変数が出力行にあるときに空白になる
私が持っている問題は以下のコードにあります。 Write-Output行の1番目と2番目の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のステータス変数は両方とも失われていますが、Write-Output行に配置した配置と数に関係なく、第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
どのようなヘルプや方向が高く評価されています。
のUPDATE 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.
あなたの文字列の変数名と '$ server_1_'の' $ server1_'です。 – TessellatingHeckler