Je me demande si quelqu'un dans Microsoft n'est jamais arrivé à une situation où il ne se souvient plus du nom d'une règle!
Le netsh advfirewall firewall show rule
seul accepte 1 nom et aucune fonction de correspondance de modèle n'est disponible sur netsh pour aider à trouver une règle en utilisant un modèle comme "SQL*"
ou en ^SQL.+$
utilisant show et name=all
il est possible de répertorier toutes les règles, mais je n'ai pas pu trouver un outil de grep de ligne de commande solide pour Windows.
Je veux pouvoir exécuter une commande comme celle-ci:
netsh advfirewall firewall show rule name=sql*
Est-ce possible?
find
windows-firewall
netsh
Achille
la source
la source
netsh advfirewall firewall show rule name=all | find "SQL"
; mais la sortie et le contrôle ne sont pas aussi satisfaisants qu'ils devraient l'être. C'est plutôt désordonné et pire encore, sensible à la casse .../I
de laFIND
commande, je peux esquiver le problème sensible à la casse; mais le résultat est toujours en désordre ...Réponses:
Dans l'exécution de PowerShell:
mieux encore:
la source
$fw.Rules | where-object {$_.Enabled -eq $true -and $_.Direction -eq 1} | Select-Object -property name, direction, enabled
New-Object
est une applet de commande PowerShell qui permet d'accéder à l'API COM beaucoup plus ancienne tout en préservant la syntaxe et la structure d'objet PowerShell.C'est le mieux que je puisse faire. Quelqu'un sait-il aller plus loin? Vous souhaitez supprimer / soustraire le nom de la règle des résultats?
la source
Sur Windows 10, je reçois un avertissement lorsque j'exécute
netsh advfirewall
, disant que les futures versions de Windows pourraient ne plus prendre en charge cette fonctionnalité et que l'on devrait utiliser PowerShell à la place. Heureusement, ce que l'OP voulait faire est facile dans PowerShell:Get-NetFirewallRule -DisplayName "SQL*"
J'avais plus de 1000 règles de pare-feu créées par un exécutable nommé au hasard que je voulais supprimer. La commande suivante a rendu cela facile à faire:
Remove-NetFirewallRule -DisplayName "*mongod.exe"
la source
Vous pouvez essayer Select-String :
la source
Sans PowerShell, vous pouvez simplement utiliser regex avec findstr:
la source
Il s'agit certes d'une réponse à la mode mais un commentaire obscurcirait le point.
Certes, cela répond également à une question légèrement différente: comment puis-je ne pas utiliser
netsh
et toujours trouver des règles? :-)Je pense qu'il est préférable de rester dans l'idiome PowerShell si vous y êtes déjà, et vous pouvez utiliser la capacité de correspondance de modèles complète, y compris les expressions rationnelles.
Pour le plaisir, j'ai inclus quelques conditions et mutations pour montrer comment toutes les constructions PowerShell peuvent être intégrées dans les blocs de style fonctionnel.
Dernière mise en garde: les mutations doivent être exécutées avec des droits d'administration là où les lectures ne sont pas nécessaires.
la source