在输出行

时间:2016-11-30 22:18:30

标签: powershell

我正在处理虚拟机维护脚本,并尝试将输出捕获到日志中。我希望随着脚本的进展收集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.

1 个答案:

答案 0 :(得分:0)

您可以在以下位置定义变量:

  

$ Server1_,$ Server2_,$ Server3 _

当你调用变量输出它时,你正在调用:

  

$ Server_1_,$ Server_2_,$ Server_3 _

在数字之前添加额外的_。

实际上,您正在调用一个尚未定义的完全不同的变量。