Windows
如何通過命令提示符創建 Windows 2008 高級防火牆規則組定義
有沒有辦法在 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 防火牆命令的語法。