2 votes

La commande s'exécute bien via cmd mais pas via PowerShell.

Cette commande ne fonctionne pas :

netsh advfirewall set allprofiles firewallpolicy blockinboundalways,allowoutbound

Cette commande fonctionne :

netsh advfirewall set allprofiles state on

J'ai essayé d'utiliser invoke-command et &, mais je n'ai pas réussi à le faire fonctionner. Lorsque j'exécute la commande ci-dessus dans PS, elle me dit :

Le nombre d'arguments fournis n'est pas valide. Consultez l'aide pour connaître la syntaxe correcte.

7voto

Tomas M Points 151

La virgule est un caractère spécial pour PowerShell. Dans votre cas, elle est interprétée comme un opérateur de tableau binaire. Il crée un tableau avec deux éléments blockinboundalways y allowoutbound . PowerShell sous la version 5 sépare les éléments d'un tableau par des espaces lorsqu'il est transmis aux applications natives. La ligne de commande résultante passée à netsh suivront :

netsh advfirewall set allprofiles firewallpolicy blockinboundalways allowoutbound

Ce qui n'est pas ce que vous voulez. Vous devez échapper à la virgule ou la mettre entre guillemets pour l'interpréter littéralement :

netsh advfirewall set allprofiles firewallpolicy blockinboundalways`,allowoutbound
netsh advfirewall set allprofiles firewallpolicy 'blockinboundalways,allowoutbound'

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X