我正在处理虚拟机维护脚本,并尝试将输出捕获到日志中。我希望随着脚本的进展收集VM的状态,所以我可以使用我的定时循环进行一些微调以进行检查/操作。
我遇到的问题是我的代码如下。写入 - 输出行中的第一个和第二个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
上述代码的输出。在写输出行中,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/01:有效作用
摆脱我的变量名称并重新开始没有下划线。在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.
答案 0 :(得分:0)
您可以在以下位置定义变量:
$ Server1_,$ Server2_,$ Server3 _
当你调用变量输出它时,你正在调用:
$ Server_1_,$ Server_2_,$ Server_3 _
在数字之前添加额外的_。
实际上,您正在调用一个尚未定义的完全不同的变量。