%WINDIR%\system32\inetsrv\appcmd.exe set site /site.name:"WebRole_IN_0_CB" /[Path='/'].applicationPool:"ASP.NET v4.0" >>CBLog.log
powershell.exe -command Set-ExecutionPolicy Unrestricted
powershell.exe .\CheckIfSuccessful.ps1
上記のスクリプトを実行したいのですが、Web サイトがまだ起動して準備ができていないために appcmd.exe がスクリプトを実行できない場合、CBLog.log ファイルに次のエラー メッセージが記録されます。
エラー (メッセージ: 識別子 "WebRole_IN_0_CB" を持つ SITE オブジェクトが見つかりません。)
CheckIfSuccessful.ps1 で、appcmd コマンドを実行してエラーを再度チェックする、ループする Powershell スクリプトを作成したいと思います。その後、5 秒間スリープしてから、成功するまで再試行します。
Powershellでこれを行うにはどうすればよいですか?
高く評価、
アップデート:
わかりました、有望に見えますが、$lastexitcode に関するヒントをありがとうございます。Powershell で一重引用符を変換する際に問題があるようです: (以下は私の最初の appcmd コマンドの一部です)
/[Path='/'].applicationPool:"ASP.NET v4.0"
これをpowershellで引用するにはどうすればよいですか? powershell で問題が発生しないように単純化しようとしましたが、次のようにコマンドが間違っているようです。
エラー (メッセージ: 識別子 "v4.0" の SITE オブジェクトが見つかりません。)
& $Env:WinDir\system32\inetsrv\appcmd.exe set site '/site.name:"WebRole_IN_0_CB"' "/[Path='/'].applicationPool:`"ASP.NET v4.0`"" >CBLog.log
if($lastexitcode -ne '0')
{
while($lastexitcode -ne '0')
{
Start-Sleep -s 5
& $Env:WinDir\system32\inetsrv\appcmd.exe set site '/site.name:"WebRole_IN_0_CB"' "/[Path='/'].applicationPool:`"ASP.NET v4.0`"" >CBLog.log
}
}
更新 II: 適切にエスケープしました。しかし、それでもエラーメッセージが表示されます。そのサイトを作成した後に appcmd を単独で実行すると、ログ ファイルは問題ありません。何か提案はありますか?