2017-09-15 62 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