Gostaria de saber se alguém na Microsoft já chegou a uma situação em que não consegue se lembrar do nome de uma regra!
O netsh advfirewall firewall show rule
único aceita 1 nome e nenhum recurso de correspondência de padrões 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 sólida de grep de linha de comando para o Windows.
Quero poder executar um comando como este:
netsh advfirewall firewall show rule name=sql*
Isso é possível?
find
windows-firewall
netsh
Aquiles
fonte
fonte
netsh advfirewall firewall show rule name=all | find "SQL"
:; mas a saída e o controle não são tão satisfatórios quanto deveriam ser. É um pouco confuso e, pior ainda, Case-Sensitive .../I
comFIND
comando, eu pode evitar o problema maiúsculas de minúsculas; mas o resultado ainda é confuso ...Respostas:
No PowerShell, execute:
melhor ainda:
fonte
$fw.Rules | where-object {$_.Enabled -eq $true -and $_.Direction -eq 1} | Select-Object -property name, direction, enabled
New-Object
é um cmdlet do PowerShell que fornece acesso à API COM muito mais antiga, preservando a sintaxe do PowerShell e a estrutura do objeto.É o melhor que eu poderia fazer. Alguém sabe como levar isso adiante? Como remover / subtrair o nome da regra dos resultados?
fonte
No Windows 10, recebo um aviso ao executar
netsh advfirewall
, dizendo que futuras versões do Windows podem não suportar mais esse recurso e, em vez disso, você 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 comando a seguir facilitou a execução:
Remove-NetFirewallRule -DisplayName "*mongod.exe"
fonte
Você pode tentar Select-String :
fonte
Sem o PowerShell, você pode simplesmente usar o regex com o findstr:
fonte
Esta é, sem dúvida, uma resposta à túnica, mas um comentário ocultaria o argumento.
Isso também está respondendo a uma pergunta um pouco diferente: como 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 recurso de correspondência completa de padrões, incluindo expressões regulares.
Para o efeito, incluí alguns 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.
fonte