O comando é executado bem no cmd, mas não no PowerShell

2

Este comando não funciona:

netsh advfirewall set allprofiles firewallpolicy blockinboundalways,allowoutbound

Este comando funciona:

netsh advfirewall set allprofiles state on

Eu tentei usar invoke-command e & amp ;, mas não consegui fazê-lo funcionar. Quando eu executo o comando acima no PS, ele me diz:

The number of arguments provided is not valid. Check help for the correct syntax.

    
por RMal 08.12.2015 / 03:41

1 resposta

5

Comma é um caractere especial para o PowerShell. No seu caso, ele é interpretado como um operador de matriz binária. Cria um array com dois elementos blockinboundalways e allowoutbound . O PowerShell abaixo da v5 separará os elementos da matriz com espaço quando a matriz for transmitida para aplicativos nativos. A linha de comando resultante passada para netsh será a seguinte:

netsh advfirewall set allprofiles firewallpolicy blockinboundalways allowoutbound

Qual não é o que você quer. Você tem que escapar de uma vírgula ou colocá-lo entre aspas para interpretá-lo literalmente:

netsh advfirewall set allprofiles firewallpolicy blockinboundalways',allowoutbound
netsh advfirewall set allprofiles firewallpolicy 'blockinboundalways,allowoutbound'
    
por 08.12.2015 / 04:31