¡Me pregunto si alguien en Microsoft ha llegado a una situación en la que no puede recordar el nombre de una regla!
El netsh advfirewall firewall show rule
único acepta 1 nombre y no hay una función de coincidencia de patrones disponible en netsh para ayudar a encontrar una regla usando un patrón como "SQL*"
o ^SQL.+$
usando show y name=all
es posible enumerar todas las reglas, pero no pude encontrar una herramienta grep de línea de comandos sólida para Windows.
Quiero poder ejecutar un comando como este:
netsh advfirewall firewall show rule name=sql*
es posible?
find
windows-firewall
netsh
Aquiles
fuente
fuente
netsh advfirewall firewall show rule name=all | find "SQL"
; pero la salida y el control no son tan satisfactorios como deberían ser. Es bastante desordenado e incluso peor, distingue entre mayúsculas y minúsculas .../I
deFIND
comandos, puedo esquivar el problema entre mayúsculas y minúsculas; pero el resultado sigue siendo desordenado ...Respuestas:
En PowerShell, ejecute:
mejor todavía:
fuente
$fw.Rules | where-object {$_.Enabled -eq $true -and $_.Direction -eq 1} | Select-Object -property name, direction, enabled
New-Object
es un cmdlet de PowerShell que proporciona acceso a la API COM mucho más antigua al tiempo que conserva la sintaxis y la estructura de objetos de PowerShell.Esto es lo mejor que puedo hacer. ¿Alguien sabe cómo llevarlo más lejos? ¿Como eliminar / restar el nombre de la regla de los resultados?
fuente
En Windows 10 recibo una advertencia cuando ejecuto
netsh advfirewall
, diciendo que las futuras versiones de Windows ya no admitirán esa característica y uno debería usar PowerShell en su lugar. Afortunadamente, lo que el OP quería hacer es fácil en PowerShell:Get-NetFirewallRule -DisplayName "SQL*"
Tenía más de 1000 reglas de firewall creadas por un ejecutable con nombre aleatorio que quería eliminar. El siguiente comando facilitó esta tarea:
Remove-NetFirewallRule -DisplayName "*mongod.exe"
fuente
Puedes probar Select-String :
fuente
Sin PowerShell, simplemente puede usar expresiones regulares con FindStr:
fuente
Esta es una respuesta que no se puede evitar, pero un comentario oscurecería el punto.
Esto también responde a una pregunta ligeramente diferente: ¿cómo no puedo usar
netsh
y aún encontrar reglas? :-)Creo que es mejor permanecer en el idioma de PowerShell si ya está allí, y puede usar la capacidad completa de coincidencia de patrones, incluidas las expresiones regulares.
Por el bien, incluí algunos condicionales y mutaciones para mostrar cómo todas las construcciones de PowerShell se pueden incorporar en los bloques de estilo funcional.
Advertencia final de que las mutaciones deben ejecutarse con derechos administrativos donde, como se lee, no es necesario.
fuente