直截了当地说,我是编码界的新手,所以请原谅我的无知。我已经剪切/粘贴了一些代码来尝试自己去模仿一些东西,但我还是被困住了。
我有一个Powershell脚本,它通过自定义脚本扩展运行Azure模板来安装防火墙规则,我还有另一个.ps1脚本,只有在启用/安装防火墙规则时才能运行它。
我发现您可以通过自定义脚本扩展部署2x ps1脚本,但它们同时运行,因此我希望第二个脚本只在防火墙规则被检测到后继续/启动。
到目前为止,我要测试的是该规则是否存在:
$text = 'Hello World'
$r = Get-NetFirewallRule -DisplayName 'MY FIREWALL RULE NAME' -ErrorAction SilentlyContinue ; if ($r) {$text | Set-Content 'c:/temp/found.txt'} else {$text | Set-Content 'c:/temp/not-found.txt'}
#This sections is the continuation of the script when the rule has been found
$text | Set-Content 'c:/temp/helloword1.txt'
所以我的想法是,如果它没有找到规则,那么暂停/重复直到它找到了,一旦它找到了规则,然后继续/启动脚本。
忽略我的helloworld/ found /not-found.txt文件,正如前面提到的,我使用这些文件来填补空白,以确定是否找到了该规则。
任何帮助都将不胜感激。
发布于 2017-10-10 04:00:12
如果你只是想睡觉,直到找到一个特定的规则,你可以使用:
while (-not (Get-NetFirewallRule -DisplayName $RuleName -EA Silent)) { sleep 1 }
发布于 2017-10-10 03:59:48
为什么不只是这样(编辑):
while (!($r = Get-NetFirewallRule -DisplayName 'MY FIREWALL RULE NAME' -ErrorAction Ignore))
{ Start-Sleep -s 1 }
https://stackoverflow.com/questions/46665906
复制相似问题