%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 文件中收到以下错误消息。
错误(消息:找不到标识符为“WebRole_IN_0_CB”的站点对象。)
在 CheckIfSuccessful.ps1 中,我想创建一个用于循环的 Powershell 脚本,该脚本运行 appcmd 命令并再次检查错误。然后休眠5秒,然后重试,直到成功。
我将如何在 Powershell 中执行此操作?
高度赞赏,
更新:
好的,非常感谢 $lastexitcode 的提示,虽然它看起来很有希望。看来我在 Powershell 中转换单引号时遇到问题:(以下是我最初的 appcmd 命令的一部分)
/[Path='/'].applicationPool:"ASP.NET v4.0"
我如何在powershell中引用这个?我试图简化它,以便 powershell 减少它的麻烦,但现在我的命令似乎是错误的,正如它现在所说的那样:
错误(消息:找不到标识符为“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
}
}
更新二: 我已经正确地逃脱了它。但我仍然收到错误消息。如果我在创建该站点后单独运行 appcmd,那么日志文件就可以了。请问有什么建议吗?