%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
Я бы хотел запустить приведенный выше сценарий, и если appcmd.exe не может его выполнить из-за того, что веб-сайт еще не запущен и не готов, я получу следующее сообщение об ошибке в файле CBLog.log.
ОШИБКА (сообщение: не удается найти объект SITE с идентификатором
"WebRole_IN_0_CB". )
В CheckIfSuccessful.ps1 я хотел бы создать скрипт для цикла Powershell, который запускает команду appcmd и снова проверяет ошибку. Затем спит в течение 5 секунд, а затем повторяет попытку, пока это не удастся.
Как бы я сделал это в Powershell?
высоко ценится,
UPDATE
Хорошо, большое спасибо за подсказку с $ lastexitcode, хотя она выглядит многообещающе. Кажется, у меня проблемы с преобразованием одинарных кавычек в Powershell: (ниже приведена часть моей первоначальной команды appcmd)
/[Path='/'].applicationPool:"ASP.NET v4.0"
Как мне процитировать это в powershell? Я попытался упростить его, чтобы у PowerShell было меньше проблем, но теперь моя команда неверна, как говорится:
ОШИБКА (сообщение: не удается найти объект SITE с идентификатором "v4.0".)
& $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 в одиночку после создания этого сайта, файл журнала будет в порядке. Любые предложения, пожалуйста?