Este comando não funciona:
netsh advfirewall set allprofiles firewallpolicy blockinboundalways,allowoutbound
Este comando funciona:
netsh advfirewall set allprofiles state on
Tentei usar o comando Invoke e &, mas não consegui fazê-lo funcionar. Quando executo o comando acima no PS, ele me diz:
O número de argumentos fornecidos não é válido. Verifique a ajuda para obter a sintaxe correta.
Responder1
Vírgula é um caractere especial do PowerShell. No seu caso, é interpretado como um operador de array binário. Ele cria um array com dois elementos blockinboundalways
e allowoutbound
. O PowerShell abaixo da v5 separará os elementos do array com espaço quando o array for passado para aplicativos nativos. A linha de comando resultante passada netsh
será a seguinte:
netsh advfirewall set allprofiles firewallpolicy blockinboundalways allowoutbound
O que não é o que você quer. Você deve escapar da vírgula ou colocá-la entre aspas para interpretá-la literalmente:
netsh advfirewall set allprofiles firewallpolicy blockinboundalways`,allowoutbound
netsh advfirewall set allprofiles firewallpolicy 'blockinboundalways,allowoutbound'