Вы можете сделать это хакерским способом, поэтому используйте Get-NetFirewallRule и окружите его оператором try catch.Если правило не существует, оно переместит нас в оператор перехвата, чтобы мы могли создать новое правило там.
try {
$firewallRule = Get-NetFirewallRule -DisplayName PROGRAM -ErrorAction Stop
"Firewall rule already exist for program.exe" | Add-Content 'file.log'
}
catch {
if(-Not $firewallRule) {
New-NetFirewallRule -Program $ecfClient -Action Allow -Profile Any -DisplayName "PROGRAM"
"Firewall rule for ecfClient.exe succesffully created" | Add-Content 'file.log'
}
}
Вы также можете проверить значение из Get-NetFirewallRule, если правило существует, оновернет true, потому что переменная не пустая.
Я знаю, что это грязный способ сделать это, но когда я искал кратчайший путь, который действительно помог мне.