我有一个PS脚本,可以创建一个新的应用程序池,然后将其.Net版本更改为4.0:
new-webapppool -name 'ABC' -force
Set-ItemProperty IIS:\AppPools\ABC managedRuntimeVersion v4.0
此脚本在Cloudformation堆栈创建过程中非交互地在AWS EC2实例上运行。
我的问题是随机出现以下错误:
Set-ItemProperty : Cannot find path 'IIS:\AppPools\ABC' because it does not exist.
我是否需要一些其他逻辑来强制PS脚本等待“ new-webapppool”命令完成?如果是这样,正确的方法是什么?
从我的Google搜索中,我发现只有在执行外部程序(.exe等)的情况下,才必须明确告诉它等待。有想法吗?
答案 0 :(得分:0)
您可以添加一个while循环,该循环将等待直到之前的命令已完全复制到您所连接的云实例。我觉得这是云的副作用。
new-webapppool -name 'ABC' -force
while (!(get-childitem IIS:\AppPools\ABC -errorAction SilentlyContinue)) {
start-sleep 5 # recheck every 5 seconds
}
Set-ItemProperty IIS:\AppPools\ABC managedRuntimeVersion v4.0
您还可以将-name
存储为变量,并在while循环中使用相同的变量。这样,您不必在每次后续运行代码时都在多个位置更新String。