2

Эта команда не работает:

netsh advfirewall set allprofiles firewallpolicy blockinboundalways,allowoutbound

Эта команда работает:

netsh advfirewall set allprofiles state on

Я пытался использовать invoke-command и &, но не смог заставить его работать. Когда я запускаю вышеупомянутую команду в PS, она говорит мне:

Количество предоставленных аргументов недопустимо. Проверьте справку для правильного синтаксиса.

1 ответ1

6

Запятая - это специальный символ для 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'

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .