Der Befehl wird über cmd einwandfrei ausgeführt, über PowerShell jedoch nicht.

Der Befehl wird über cmd einwandfrei ausgeführt, über PowerShell jedoch nicht.

Dieser Befehl funktioniert nicht:

netsh advfirewall set allprofiles firewallpolicy blockinboundalways,allowoutbound

Dieser Befehl funktioniert:

netsh advfirewall set allprofiles state on

Ich habe versucht, den Invoke-Befehl und & zu verwenden, aber es hat nicht funktioniert. Wenn ich den obigen Befehl in PS ausführe, wird mir Folgendes angezeigt:

Die Anzahl der angegebenen Argumente ist ungültig. Die korrekte Syntax finden Sie in der Hilfe.

Antwort1

Komma ist ein Sonderzeichen für PowerShell. In Ihrem Fall wird es als binärer Array-Operator interpretiert. Es erstellt ein Array mit zwei Elementen blockinboundalwaysund allowoutbound. PowerShell unter v5 trennt Array-Elemente mit Leerzeichen, wenn das Array an native Anwendungen übergeben wird. Die resultierende Befehlszeile, die an übergeben wird, netshlautet wie folgt:

netsh advfirewall set allprofiles firewallpolicy blockinboundalways allowoutbound

Das ist nicht das, was Sie wollen. Sie müssen das Komma maskieren oder in Anführungszeichen setzen, um es wörtlich zu interpretieren:

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

verwandte Informationen