powershell中字符串上的ForEach循环

powershell中字符串上的ForEach循环,powershell,Powershell,我正在尝试从使用veeam backup备份的虚拟机列表中查找所有上次作业状态。 奇怪的是,这个循环没有转到下一个vm。以下是我的工作: Add-PSSnapin VeeamPSSnapin $VMlist = "vm1, vm2" $VMlist = $VMlist.split(","); Foreach ($i in $VMlist) { foreach($Job in (Get-VBRJob)) { $Session = $Job.FindLastSession

我正在尝试从使用veeam backup备份的虚拟机列表中查找所有上次作业状态。 奇怪的是,这个循环没有转到下一个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}
似乎我在for-each循环中遇到了问题,因为它卡住了,我没有得到任何输出。迭代虚拟机的最佳方式是什么


提前谢谢

您在
$Tasks
中查找的是
$VMList
数组,而不是单个VM
$i
,只需更改:
{$\ Name-eq$i}

此外,您的VM名称将包含前导空格,请从输入字符串中删除空格
“vm1,vm2”
,或在
拆分()后使用


您在
$Tasks
中查找的是
$VMList
数组,而不是单个VM
$i
,只需更改:
{$\u.Name-eq$i}

此外,您的VM名称将包含前导空格,请从输入字符串中删除空格
“vm1,vm2”
,或在
拆分()后使用

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}
    }
}