-Passthru
の仕組みが混乱しています。パススルーを使用してコマンドレットが終了していることを確認してください
-Passthru
パラメータは、コマンドレット自体が結果を生成しない場合でも、コマンドレットの結果をパイプラインに渡すために使用されます。
は、私が最初にこれらのコードを記述してみました:
Stop-WebAppPool -Name Foo
Start-WebAppPool -Name Foo
(私はRestart-WebAppPool
コマンドレットを使用せずに、IISアプリケーションプールをリサイクルしようとしている)私が予想したように、それはIIS ApplicationPoolを停止する時間がかかり、以来、 PowerShellはコマンドレットが完了するまで待機せず、Stop-WebAppPool
はアプリケーションプールを停止して戻ります。アプリケーションプールが開始する準備ができていないため、Start-WebAppPool
が呼び出され、エラーがスローされます。
だから私は、これらの中に私のコードを変更:
Stop-WebAppPool -Name Foo
Start-Sleep -Seconds SomeValueNeedToGetMeasuredAndChanged
Start-WebAppPool -Name Foo
それは非常にelegentで柔軟な働きはありません。
その後、私は、コマンドレットの両方に-Passthru
を追加し、それは次のようになります。
Stop-WebAppPool -Name Foo -Passthru
Start-WebAppPool -Name Foo -Passthru
すべてが正常になり、エラーがスローされません。私の場合は
、私は考えます:
アプリケーションプールは本当に開始/停止しますまで、ストップ/スタート・WebAppPoolコマンドレットは何も結果を生成しません。 -Passthru
は何かをパイプラインに渡す必要があるため、PowerShellはコマンドレットが結果を生成するのを待ちます。この場合、アプリケーションプールは停止/開始され、次の処理を実行します。
-Passthru
またはStop-WebAppPool
のいずれの便利なマニュアルも見つからないので、この場合は問題ありませんか?
ありがとうございました!私は '-PassThru'を削除し、上で提供したコードを使用しました!魅力的な作品! – WonTasia