多个PowerShell变量在输出行中出现空白
我有一个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.
看来,你在哪里定义的变量,你必须:
$ Server1_,$ Server2_,$ Server3_
当您调用变量输出它时,您正在调用:
$ Server_1_,$ Server_2_,$ Server_3_
号码前添加一个额外的_。
实际上,您正在调用尚未定义的完全不同的变量。
感谢您的协助。我从一个朋友那里得到了一些进一步的帮助,他通过为名称和状态做$($ Server1.property)给了我一个更清晰的写输出。 – Tim
'$ server1_'在你的字符串中的变量名和'$ server_1_'中。 – TessellatingHeckler