find.exe 명령으로 PowerShell 파이프


8

그냥 궁금해서 왜 이런 일이 발생합니까? 내가 달리면 :

netstat -an | find "443"

명령 프롬프트에 "443"연결이 정상적으로 표시됩니다. PowerShell 콘솔 또는 ISE에서 동일한 명령을 실행하면 "FIND : Parameter format not correct"오류가 발생합니다. PS에서 netstat 출력이 올바르게 파이프되지 않습니까?

참고 : PS를 사용 netstat -an | findstr "443"하거나 실행하면 netstat -an | select-string "443"예상대로 작동합니다.


답변:


13

PowerShell은 큰 따옴표 내에서 내용을 평가하여 변수 확장, 하위 식 등을 수행 한 다음 큰 따옴표를 버립니다. PowerShell이 ​​반환하는 "443"것은 문자 그대로 443입니다. 따옴표가 없습니다. 큰 따옴표로 묶인 검색 문자열이 FIND.EXE 필요 합니다.

PowerShell에서 큰 따옴표를 제거하지 못하게하려면 억음 악센트 (`)를 사용하여 따옴표를 이스케이프 처리하십시오.

netstat -a -n  | find `"443`"

--%이스케이프를 수행하기 위해 매개 변수를 사용할 수도 있습니다 . PowerShell 3 이상이 필요합니다.

nestat -a -n | find --% "443"

findstr.exe가 탈출하지 않고 작동하는 이유가 궁금합니다.
Vic

3
@Vic findstr에 따옴표가 필요하지 않습니다 유틸리티 /C문자열 매개 변수를 : findstr /C:somestring somefile처럼 작동합니다 findstr /C:"somestring" somefile. 의 경우 FIND큰 따옴표가 필요합니다.
jscott
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.