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 blockinboundalways
und allowoutbound
. PowerShell unter v5 trennt Array-Elemente mit Leerzeichen, wenn das Array an native Anwendungen übergeben wird. Die resultierende Befehlszeile, die an übergeben wird, netsh
lautet 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'