Эта команда не работает:
netsh advfirewall set allprofiles firewallpolicy blockinboundalways,allowoutbound
Эта команда работает:
netsh advfirewall set allprofiles state on
Я пробовал использовать invoke-command и &, но не смог заставить это работать. Когда я запускаю указанную выше команду в PS, она мне говорит:
Недопустимое число аргументов. Проверьте справку для правильного синтаксиса.
решение1
Запятая — это специальный символ для PowerShell. В вашем случае она интерпретируется как оператор двоичного массива. Она создает массив с двумя элементами blockinboundalways
и allowoutbound
. PowerShell ниже v5 будет разделять элементы массива пробелом при передаче массива в собственные приложения. Результирующая командная строка, переданная в, netsh
будет следующей:
netsh advfirewall set allprofiles firewallpolicy blockinboundalways allowoutbound
Это не то, что вам нужно. Вам нужно экранировать запятую или заключить ее в кавычки, чтобы интерпретировать ее буквально:
netsh advfirewall set allprofiles firewallpolicy blockinboundalways`,allowoutbound
netsh advfirewall set allprofiles firewallpolicy 'blockinboundalways,allowoutbound'