2017-10-10 8 views
1

ストレート・アップ、私はコーディング・ワールドには新しいので、私の無知を許してください。私は自分自身で何かを試してみるためにいくつかのコードをカット/ペーストしていますが、まあまあです。Powershell経由でファイアウォールルールが存在するかどうかを確認する方法、そうでない場合はスクリプトが停止するまでスクリプトを一時停止する方法

Azure ARMテンプレートをカスタムスクリプトエクステンションで実行してファイアウォールルールをインストールするPowershellスクリプトがあり、ファイアウォールルールが有効になっている場合にのみ実行する別の.ps1スクリプトがあります。

カスタムスクリプト拡張機能を使用して2x ps1スクリプトをデプロイできることが判明しましたが、両方が同時に実行されるため、ファイアウォールルールが検出された後に2番目のスクリプトを続行/開始する必要があります。 、

$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ファイルを無視して、前述のように、これらを使用してギャップを埋めることで、ルールが見つかったかどうかを判断しました。

ご協力いただければ幸いです。

答えて

1

あなただけの特定のルールを使用することができます発見されるまでスリープ状態に探している場合:

while (-not (Get-NetFirewallRule -DisplayName $RuleName -EA Silent)) { sleep 1 } 
1

なぜこのようなだけで何か(編集):

while (!($r = Get-NetFirewallRule -DisplayName 'MY FIREWALL RULE NAME' -ErrorAction Ignore)) 
{ Start-Sleep -s 1 } 
+0

'ながら、() {} 'が初めて見つかった場合はスリープしません。 – ConnorLSW

+0

はい、彼は変数にそれを保存したいかもしれませんが、答えは私がLOLを保存した直後に実現したものです –

+0

両者は正しいですが、残念ながら私はそれらを両方とも正しくできませんでした。しかし、ありがとう! ! -notと同じ意味ですか? – Beefcake

関連する問題