2017-07-12 30 views
0

このwhileループで問題が発生しています。ステータスがオンラインのまま返されても、whileループではまだまだ立ち往生しています...どんな考えもすばらしいでしょう:)powershell whileループが期待通りに動作しない

$instance = "(opsworks instance id)" 

$status = (Get-OPSInstance -InstanceId $instance -Region eu-west-1).Status.Trim() 
Write-Host "Initial:$status" 

while($status -ne 'online' -or $status -ne 'start_failed') 
{ 
    $status = (Get-OPSInstance -InstanceId $instance -Region eu-west-1).Status.Trim() 
    Write-Host "Next:$status!" 
} 
+0

'-or'を' -and'に変更します。それが 'オンライン'のときにも 'start_failed'ではないので、ループはループします。 – TessellatingHeckler

答えて

2

これは基本的なブール代数です。 onlinestart_failedと等しくないために発生します。 -or演算子は式の両辺をチェックし、いずれか一致する場合はtrueを返します。 $status IFF falseonlinestart_failedでもないよう

条件

($status -ne 'online' -and $status -ne 'start_failed') 

が評価されます。

+0

ありがとう!私は今あなたの言っていることを取得し、私が間違っていた場所を完全に参照してください!素晴らしいとありがとう:) – Stelly

関連する問題