我正在尝试从使用veeam备份备份的VM列表中找到所有最近的作业状态。 奇怪的是,循环不会转到下一个虚拟机。这是我的工作:
Add-PSSnapin VeeamPSSnapin
$VMlist = "vm1, vm2"
$VMlist = $VMlist.split(",");
Foreach ($i in $VMlist) {
foreach($Job in (Get-VBRJob))
{
$Session = $Job.FindLastSession()
if(!$Session){continue;}
$Tasks = $Session.GetTaskSessions()
$Tasks | ?{$_.Name -eq $VMlist} | %{write-host $_.Name ":" $_.Status}
似乎每个循环中都有一个问题,因为它卡住了,我没有得到任何输出。在虚拟机的狭缝上进行迭代的最佳方法是什么?
谢谢!
答案 0 :(得分:0)
您要在$VMList
中寻找$Tasks
数组,而不是单个VM $i
,只需更改:{$_.Name -eq $i}
您的VM名称也将包含前导空格,或者从输入字符串"vm1,vm2"
中删除空格,或者在Split()
之后使用Trim()
Add-PSSnapin VeeamPSSnapin
$VMlist = "vm1,vm2"
$VMlist = $VMlist.split(",");
foreach ($i in $VMlist) {
foreach ($Job in (Get-VBRJob)) {
$Session = $Job.FindLastSession()
if (!$Session) {continue; }
$Tasks = $Session.GetTaskSessions()
$Tasks | Where-Object {$_.Name -eq $i} | ForEach-Object {Write-Host $_.Name ":" $_.Status}
}
}