No PowerShell, execute:
$fw=New-object -comObject HNetCfg.FwPolicy2
$fw.rules | findstr /i "whaturlookingfor"
melhor ainda:
$fw.rules | select name | select-string "sql"
Gostaria de saber se alguém na Microsoft já chegou a uma situação em que não consegue lembrar o nome de uma regra!
O netsh advfirewall firewall show rule
aceita apenas o nome 1 e nenhum recurso de correspondência de padrão está disponível no netsh para ajudar a encontrar uma regra usando um padrão como "SQL*"
ou ^SQL.+$
Usando show e name=all
é possível listar todas as regras, mas não consegui encontrar uma ferramenta grep de linha de comando para windows.
Eu quero poder executar um comando assim:
netsh advfirewall firewall show rule name=sql*
Isso é possível?
Isso é o melhor que eu poderia fazer. Alguém sabe como ir mais longe? Como remover / subtrair o nome da regra dos resultados?
netsh advfirewall firewall show rule name=all | find "Rule Name:" | find "NameLookingFor"
Você pode tentar Selecionar sequência :
netsh advfirewall firewall show rule name=all | select-string -pattern "Hyper-V"
No Windows 10, recebo um aviso quando executo netsh advfirewall
, dizendo que futuras versões do Windows talvez não suportem mais esse recurso e que se deve usar o PowerShell. Felizmente, o que o OP queria fazer é fácil no PowerShell:
Get-NetFirewallRule -DisplayName "SQL*"
Eu tinha mais de 1000 regras de firewall criadas por um executável de nome aleatório que eu queria remover. O seguinte comando tornou isso fácil de fazer:
Remove-NetFirewallRule -DisplayName "*mongod.exe"
Sem o PowerShell, você pode simplesmente usar o regex com o findstr:
netsh advfirewall firewall show rule name=all | findstr /R "sql.*"
Esta é, reconhecidamente, uma resposta de casaco, mas um comentário obscureceria o ponto.
Isso também está respondendo a uma pergunta um pouco diferente: como eu não posso usar netsh
e ainda encontrar regras? : -)
Eu acho que é melhor permanecer no idioma do PowerShell se você já estiver lá, e você pode usar o capacidade de correspondência de padrões completa incluindo regexes aqui.
Para o efeito, incluí algumas condicionais e mutações para mostrar como todas as construções do PowerShell são incorporáveis nos blocos de estilo funcional.
Advertência final de que as mutações devem ser executadas com direitos administrativos, onde as leituras não precisam.
(New-Object -ComObject HNetCfg.FwPolicy2).rules |
Where-Object { $_.Name -match '^SQL.+$' } |
ForEach-Object { Write-Output "Checking $($_.Name)"
if ( $_.Enabled ) { Write-Output "$($_.Name) already enabled" }
else { Write-Output "$($_.Name) enabled"; $_.Enabled = $true }
}
Tags find netsh windows-firewall