netsh advfirewall firewall
でファイアウォール ルールを作成すると、そのルールを複数回実行して、同一のファイアウォール ルールを複数作成できることに気付きました。
新しいファイアウォール ルールを作成する前に、ファイアウォール ルールが存在するかどうかを確認する方法はありますか?
netsh advfirewall firewall
でファイアウォール ルールを作成すると、そのルールを複数回実行して、同一のファイアウォール ルールを複数作成できることに気付きました。
新しいファイアウォール ルールを作成する前に、ファイアウォール ルールが存在するかどうかを確認する方法はありますか?
ルール「myrule」が存在しないかどうかを確認する
netsh advfirewall firewall show rule name="myrule" | findstr "no rules"
PowerShell の Network Security Cmdlets を介してこれを実行することができました。次のコードは、指定されたローカル ポートと共に名前付きファイアウォール ルールをチェックします。エントリが見つかった場合、ルールは作成されません。エントリが見つからない場合は、ルールが作成されます
$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"
}