Windows

如何通過命令提示符創建 Windows 2008 高級防火牆規則組定義

  • March 18, 2020

有沒有辦法在 Windows 高級防火牆中創建組或添加到現有組中的規則(最好通過命令提示符或 WSH 腳本)。

編輯:

在此處輸入圖像描述

為這個困擾我很久的老問題找到了解決方案!

New-NetFirewallRule TechNet 文章對 New-NetFirewallRule 命令行開關的參數-Group進行了說明:

$$ … $$此參數指定 DisplayGroup 參數的源字元串。 $$ … $$規則組可用於按影響組織規則並允許批量修改規則。使用 Set-NetFirewallRule cmdlet,如果為一組規則或規則集指定了組名稱,則該組中的所有規則或規則集都會收到相同的修改集。使用通用且全球通用的間接 @FirewallAPI 名稱指定此參數值是一種很好的做法。 注意:DisplayGroup 參數不能在使用 New-NetFirewallRule cmdlet 創建對象時指定,但可以使用點表示法和 Set-NetFirewallRule cmdlet 進行修改。

聽起來有機會,對吧?在嘗試自己找出方法時,我執行了以下命令:

Get-NetFirewallRule -DisplayName "Core Networking - IPv6 (IPv6-In)" | Get-Member

…並註意到該DisplayGroup屬性只有一個 Get 方法,但該Group屬性(及其RuleGroup別名)同時具有 Get 和 Set 方法。

PowerShell 解決方案如下:

感謝@maoizm,當存在 1 個或多個具有相同 DisplayName 的規則時,此解決方案現在可以工作:

$RuleName = "NameOfYourFirewallRuleGoesHere"
$RuleGroup = "YourGroupNameGoesHere"
Get-NetFirewallRule -DisplayName $RuleName | ForEach { $_.Group = '$RuleGroup'; Set-NetFirewallRule -InputObject $_ }

這實際上會創建一個分配給您的規則的新組名。

注意:該netsh命令沒有add group命令。在此處查看Netsh AdvFirewall 防火牆命令的語法。

引用自:https://serverfault.com/questions/325544