동일한 명령에서 PowerShell이 ​​cmd.exe와 다르게 동작하는 이유는 무엇입니까? LPT9 따라서 파일을

문제는 아마도 두 프로그램이 다르게 작동한다는 것을 알 수있는 시나리오에서 가장 잘 설명 될 것입니다.

con 이라는 파일이 포함 된 하드 드라이브에서 Linux 시절의 오래된 백업을 받았습니다 . MSDN이 상태로 , 죄수는 예약 된 장치 이름과 파일에 사용되지 않을 수 있습니다 :

파일 이름으로 다음과 같은 예약 된 장치 이름을 사용하지 마십시오.

CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, ​​COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8 및 LPT9

따라서 파일을 삭제하는 데 문제가 있었지만 수퍼 유저 응답 에서이 명령에서 찾은 적절한 이름 이스케이프를 사용하여 파일 을 삭제할 수있었습니다.

del "\\.\F:\Movies\Con Man\Con.Man.2018.720p.WEBRip.x264-[YTS.AM].mp4"

먼저 PowerShell을 통해 주어진 명령으로 파일을 삭제하려고했습니다. 디렉토리 또는 드라이브가 존재하지 않는다는 오류가 발생했습니다. C : \ WINDOWS \ System32 \ cmd.exe 만 파일을 삭제할 수있었습니다. 관리자 권한으로 두 셸을 모두 실행했습니다.

그래서이 시점부터 나는 단순히 알고 싶었습니다. 왜 그들은 다르게 행동합니까? PowerShell에 일종의 분리 권한 수준이 있습니까? 아니면 일종의 특수 샌드 박스에서 실행 중입니까?



답변

둘 다.

명령 프롬프트는 이전 MS-DOS의 연속으로, 특수 장치와 통신하는 유일한 방법은 장치 이름을 사용하는 것입니다 : PRN, CON 등

이것은 기본적으로 장치가 호출하고 그 뒤에 마침표가 오는 파일은 Windows에서 불법임을 의미합니다. MS-DOS에는 해결 방법이 있지만 Powershell은 해결 방법이 없습니다. 이것은 기본적으로 Windows에서이 잘못된 파일 이름을 위반 한 파일로 작업 할 수 없음을 의미합니다.

그렇습니다. 그런 이유로 인해 그들은 매우 다릅니다. 그들이 할 수있는 것뿐만 아니라 전체 구문이 다릅니다. Powershell을 사용하면 명령 프롬프트에서 할 수 있지만 다른 방법으로는 할 수 없습니다.