2015-08-24 3 views
2

Я заметил, что когда мы создаем правило брандмауэра через netsh advfirewall firewall, его можно запускать несколько раз, создавая несколько одинаковых правил брандмауэра.Дублированные правила брандмауэра Windows (брандмауэр Netsh AdvFirewall)

Есть ли способ проверить, существует ли правило брандмауэра, прежде чем пытаться создать новый?

ответ

3

Мне удалось получить это через командлеты PowerShell Network Security, следующий код будет проверять именованное правило брандмауэра вместе с указанным локальным портом, если он находит запись, он не создает правило. Если он не найдет запись, она будет создать правило

$firewallPort = "" 
$firewallRuleName = "" 

write-host "Checking for '$firewallRuleName' firewall rule on port '$firewallPort' now...." 
if ($(Get-NetFirewallRule –DisplayName $firewallRuleName | Get-NetFirewallPortFilter | Where { $_.LocalPort -eq $firewallPort })) 
{ 
    write-host "Firewall rule for '$firewallRuleName' on port '$firewallPort' already exists, not creating new rule" 
} 
else 
{ 
    write-host "Firewall rule for '$firewallRuleName' on port '$firewallPort' does not already exist, creating new rule now..." 
    New-NetFirewallRule -DisplayName $firewallRuleName -Direction Inbound -Profile Domain,Private,Public -Action Allow -Protocol TCP -LocalPort $firewallPort -RemoteAddress Any 
    write-host "Firewall rule for '$firewallRuleName' on port '$firewallPort' created successfully" 
} 
3

Проверьте, если правило «myrule» не существует

netsh advfirewall firewall show rule name="myrule" | findstr "no rules" 
Смежные вопросы