2017-09-15 60 views
1

我用下面的一个做,直到块循环,直到指定的Exchange Online的迁移状态存在:PowerShell的位置对象值

(Get-Migrationbatch -Identity $MigrationBatchName | Where {$_.Status -like "Completed" -or "CompletedWithErrors" -or "Corrupted" -or "Failed" -or "Stopped"}) 

然而,上面仍然返回作业与“同步”的状态,所以不管脚本如何继续。

我试过 - 匹配,-eq但仍然相同。

我错过了什么?

+0

你可以发布什么'GET-Migrationbatch -Identity $ MigrationBatchName'让你?你也使用'或'错误,可能是你为什么得到这个问题。这也适用于Where Where $ {_。Status-like“Completed”} – ShanayL

+0

“Get-Migrationbatch -Identity $ MigrationBatchName”正在返回变量中指定的作业,但状态为“正在同步”。只是使用“Where {$ _。Status -like”Completed“}”确实奏效,但以为我以前可以正确使用它。我应该如何使用 - 或者然后? – jshizzle

回答

5

你必须把它写这样的:

(Get-Migrationbatch -Identity $MigrationBatchName | Where {($_.Status -like "Completed") -or ($_.Status -like "CompletedWithErrors") -or ($_.Status -like "Corrupted") -or ($_.Status -like "Failed") -or ($_.Status -like "Stopped")}) 

这里是另一种方式来做到这一点:

$valuesToLookFor = @(
    'Completed', 
    'CompletedWithErrors', 
    'Corrupted', 
    'Failed', 
    'Stopped') 

(Get-Migrationbatch -Identity $MigrationBatchName | 
    Where-Object { $valuesToLookFor -contains $_.Status }) 
+1

你打败了我。 – ShanayL

+1

很好,谢谢。我已经尝试过这种方法,但是使用-eq而不是 - 像......一样!我开始在数组中开始玩耍,但又一次忘记使用-contains开关,而不是使用-contains开关。我刚刚尝试了上面的数组方法,但没有得到任何结果! – jshizzle

+0

您使用的是什么版本的PowerShell? – JamesQMurphy