명령은 cmd를 통해 제대로 실행되지만 PowerShell을 통해서는 실행되지 않습니다.

명령은 cmd를 통해 제대로 실행되지만 PowerShell을 통해서는 실행되지 않습니다.

이 명령은 작동하지 않습니다.

netsh advfirewall set allprofiles firewallpolicy blockinboundalways,allowoutbound

이 명령은 작동합니다:

netsh advfirewall set allprofiles state on

Invoke-command와 &를 사용해 보았지만 제대로 작동하지 못했습니다. PS에서 위 명령을 실행하면 다음과 같이 표시됩니다.

제공된 인수 수가 잘못되었습니다. 올바른 구문에 대해서는 도움말을 확인하세요.

답변1

쉼표는 PowerShell의 특수 문자입니다. 귀하의 경우 이진 배열 연산자로 해석됩니다. 두 개의 요소 blockinboundalways와 으로 배열을 만듭니다 allowoutbound. v5 이하의 PowerShell은 배열이 기본 애플리케이션에 전달될 때 배열 요소를 공백으로 구분합니다. 전달된 결과 명령줄은 netsh다음과 같습니다.

netsh advfirewall set allprofiles firewallpolicy blockinboundalways allowoutbound

당신이 원하는 것이 아닙니다. 문자 그대로 해석하려면 쉼표를 피하거나 따옴표로 묶어야 합니다.

netsh advfirewall set allprofiles firewallpolicy blockinboundalways`,allowoutbound
netsh advfirewall set allprofiles firewallpolicy 'blockinboundalways,allowoutbound'

관련 정보