繁体   English   中英

如何使Powershell等待内部命令完成?

[英]How to make Powershell wait on internal command to finish?

我有一个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等)的情况下,才应明确告诉它等待。 思考?

您可以添加一个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。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM