Encontrei uma solução para essa pergunta antiga que também tem me incomodado há muito tempo!
A New-NetFirewallRule O artigo do TechNet informa isso sobre o parâmetro -Group
do commandlet New-NetFirewallRule:
[...] This parameter specifies the source string for the DisplayGroup parameter. [...] Rule groups can be used to organize rules by influence and allows batch rule modifications. Using the Set-NetFirewallRule cmdlets, if the group name is specified for a set of rules or sets, then all of the rules or sets in that group receive the same set of modifications. It is a good practice to specify this parameter value with a universal and world-ready indirect @FirewallAPI name.
Note: The DisplayGroup parameter cannot be specified upon object creation using the New-NetFirewallRule cmdlet, but can be modified using dot-notation and the Set-NetFirewallRule cmdlet.
Parece que há uma chance, certo? Ao tentar descobrir como fazer isso sozinho, eu corri o seguinte:
Get-NetFirewallRule -DisplayName "Core Networking - IPv6 (IPv6-In)" | Get-Member
... e observou que a propriedade DisplayGroup
tem apenas um método Get, mas a propriedade Group
(com seus RuleGroup
alias) tem um método Get e um Set.
A solução PowerShell é a seguinte:
Graças a @maoizm, esta solução agora funciona quando 1 ou mais regras com o mesmo DisplayName existem:
$RuleName = "NameOfYourFirewallRuleGoesHere"
$RuleGroup = "YourGroupNameGoesHere"
Get-NetFirewallRule -DisplayName $RuleName | ForEach { $_.Group = '$RuleGroup'; Set-NetFirewallRule -InputObject $_ }
E isso realmente criará um novo nome de grupo atribuído à sua regra.
Observação : o comando netsh
não possui o comando add group
. Consulte a sintaxe dos Comandos do Netsh AdvFirewall Firewall aqui.