如何通过命令提示符创buildWindows 2008高级防火墙规则组定义

有没有办法在Windows高级防火墙中创build组或添加到现有组中的规则(最好通过命令提示符或WSH脚本)。

编辑:

在这里输入图像说明

find了这个老问题的解决scheme,这个问题也一直困扰着我很久!

新的NetFirewallRule TechNet文章陈述了有关New-NetFirewallRule命令行开关的-Group参数:

[…]该参数指定DisplayGroup参数的源string。 […]规则组可用于按影响组织规则,并允许批量规则修改。 使用Set-NetFirewallRule cmdlet,如果为一组规则或集合指定了组名称,则该组中的所有规则或集合都会接收相同的一组修改。 指定此参数值是一个很好的习惯,使用通用的,世界级的间接@FirewallAPI名称。

注意 :在使用New-NetFirewallRule cmdlet创build对象时,不能指定DisplayGroup参数,但可以使用点符号和Set-NetFirewallRule cmdlet修改该参数。

听起来好像有机会吧? 在试图找出如何做到这一点,我跑了以下几点:

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

…并注意到DisplayGroup属性只有一个Get方法,但Group属性(及其RuleGroup别名)同时具有Get和Set方法。

PowerShell解决scheme如下所示:

感谢@maoizm,当存在一个或多个具有相同DisplayName的规则时,此解决scheme现在可以工作:

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

这实际上会创build一个新的组名称分配给您的规则。

注意netsh命令没有add group命令。 请参阅Netsh AdvFirewall防火墙命令的语法。

Windows防火墙中的规则可以捆绑在一起并作为一组激活或停用。

使用netsh advfirewall命令,您可以将规则添加到防火墙。 使用开关group=来pipe理AdvFirewall组。

使用这样的东西:

 netsh advfirewall firewall set rule profile=domain group="Remote Desktop" new enable=Yes 

当你特别提到

通过命令提示符

我会假设你的意思是使用脚本。 与2008年,你可以使用PowerShell。 它非常简单:

 function Add-FirewallRule { param( $name, $tcpPorts, $appName = $null, $serviceName = $null ) $fw = New-Object -ComObject hnetcfg.fwpolicy2 $rule = New-Object -ComObject HNetCfg.FWRule $rule.Name = $name if ($appName -ne $null) { $rule.ApplicationName = $appName } if ($serviceName -ne $null) { $rule.serviceName = $serviceName } $rule.Protocol = 6 #NET_FW_IP_PROTOCOL_TCP $rule.LocalPorts = $tcpPorts $rule.Enabled = $true $rule.Grouping = "@firewallapi.dll,-23255" $rule.Profiles = 7 # all $rule.Action = 1 # NET_FW_ACTION_ALLOW $rule.EdgeTraversal = $false $fw.Rules.Add($rule) } # Sample Usage Add-FirewallRule "Test port 1234" "1234" $null $null Add-FirewallRule "Test port 5555-6666" "5555-6666" $null $null Add-FirewallRule "Test port 2222 Calc" 2222 "c:\windows\system32\calc.exe" $null Add-FirewallRule "Test port 3333 W3SVC" 3333 $null "W3SVC" 

看到这篇文章的更多细节…