2017-10-10 2 views
1

Gerade bin ich neu in der Programmierwelt, also bitte vergib mir meine Unwissenheit. Ich habe Code ausgeschnitten/eingefügt, um zu versuchen, etwas über mich selbst zu sagen, aber ich bin irgendwie festgefahren.Wie überprüft man, ob eine Firewall-Regel über Powershell existiert, wenn nicht, Skript pausieren, bis es funktioniert?

Ich habe ein Powershell-Skript, das eine Azure ARM-Vorlage über Custom Script Extension ausführt, um eine Firewallregel zu installieren, und ich habe ein anderes .ps1-Skript, das ich nur ausführen möchte, wenn die Firewallregel aktiviert/installiert wurde.

Ich habe festgestellt, dass Sie 2x ps1-Skripte über Custom Script Extensions bereitstellen können, aber beide laufen zur gleichen Zeit, weshalb ich möchte, dass der 2. nur fortgesetzt/gestartet wird, sobald die Firewall-Regel erkannt wurde.

Hier ist, was ich bisher getestet haben, wenn die Regel existiert oder nicht:

$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' 

Also, was ich denke, wenn sie es nicht die Regel, dann Pause/Wiederholung bis tut gefunden hat, Sobald es die Regel gefunden hat, fahre fort/starte das Skript.

Ich ignoriere meine helloworld/found/not-found.txt-Dateien, wie erwähnt, ich habe diese verwendet, um die Lücken zu füllen, um herauszufinden, ob die Regel gefunden wird oder nicht.

Jede Hilfe würde sehr geschätzt werden.

Antwort

1

Wenn Sie schauen, um nur zu schlafen, bis eine bestimmte Regel, die Sie verwenden können, zu finden ist:

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

Warum nicht einfach so etwas wie dieses (Edited):

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

ein 'while() {} 'wird nicht schlafen, wenn es das erste Mal gefunden wird. – ConnorLSW

+0

Ja, aber er könnte es auf Variable speichern wollen, die Antwort, die ich direkt nach dem Speichern lol –

+0

realisiert, während beide richtig sind, konnte ich leider nicht beide richtig machen. aber danke! macht das! meine das gleiche wie - nicht? – Beefcake

Verwandte Themen