"Powershell" 대신 "Cmd /c Powershell"을 사용하는 이유는 무엇입니까?

"Powershell" 대신 "Cmd /c Powershell"을 사용하는 이유는 무엇입니까?

다음에 제공된 지침에 따라 레지스트리를 사용하여 첫 번째 상황에 맞는 메뉴를 추가했습니다.이 질문(그래 나야).

나는 원래 이것을 실행하는 명령, 즉 "command" 키의 값으로 사용했습니다.

Cmd /C Powershell  "imageSeqView --% \"%1\""

ImageSeqView내 powershell 함수의 이름입니다. 내 powershell 프로필로 가져옵니다. 잘 작동하지만 궁금합니다. 왜 함수를 실행하기 위해 cmd열기를 사용합니까? Powershell그냥 하는 게 더 간단하지 않을까요?

Powershell  "imageSeqView --% \"%1\""

그 명령은 잘 작동하는 것 같지만 사용하는 것이 표준적인 것처럼 보이기 때문에 cmd비밀리에 강아지를 죽이는 것인지 궁금합니다.

여기에 이미지 설명을 입력하세요

답변1

이렇게 할 이유가 없습니다. 실제로 발생하는 유일한 실제 효과는 작업 속도를 늦추는 것입니다.

사람들은 이렇게 하는 데에는 타당한 이유가 있다고 생각할 수도 있습니다. CMD를 사용하면 다음과 같은 효과가 있으며 일반적으로 어떤 경우에는 좋을 수 있습니다.

  • DIR" " 와 같은 내부 명령을 활성화합니다.
  • PATH 변수와 같은 환경 변수를 설정합니다.

그러나 이 경우에는 해당 혜택 중 어느 것도 얻지 못합니다. 다음 두 가지 시나리오를 모두 살펴보겠습니다.

CMD /C따라서 어떤 경우에는 " "를 사용하는 것이 유용 할 때가 있습니다 . 예를 들어 PSEXECSysInternals에서 다운로드한 외부 명령을 사용 하고 DIR원격 컴퓨터에서 " "을 실행하려고 하면 Windows는 " DIR" 명령을 실행하려고 시도합니다. 지원되는 다른 확장자로 끝나는 " DIR.EXE", " DIR.BAT" 또는 " " 파일이 없기 때문에 Windows에서는 해당 명령을 실행하지 못합니다 . DIR(지원되는 확장자는 " "를 실행하여 확인할 수 있습니다 ECHO %PATHEXT%.)

그러나 이 시나리오에서 " "을 실행하려고 하면 CMD /C DIRWindows가 " "이라는 실행 파일을 찾아 CMD이를 찾은 다음 내부 명령인 CMD" " 명령을 성공적으로 실행하게 되므로 작동할 것입니다. DIR" CMD" 명령의 일부입니다.

이 경우 powershell" "처럼 쉽게 실행할 수 있으므로 CMD /C powershell불필요한 " CMD /C"로 인해 이점을 얻을 수 없습니다. " "를 입력하는 추가 단계를 통해 내가 볼 수 있는 유일한 이점은 누군가 명령줄 " " 또는 " " CMD /C을 실행하기 위해 예제를 수정하려고 결정한 경우 유용할 예제를 제공한다는 것입니다 . 좀 더 유연한 예를 갖는 것이 일부 사람들에게는 유용할 수 있습니다. 사람들이 자신이 무엇을 하고 있는지 알면 실제로는 필요하지 않습니다.DIRCOPY

제가 제공한 두 번째 요점은 환경 변수를 설정하는 것인데, 이 특별한 경우에는 적극적으로 수행하지 않는 작업이기도 합니다. 어쩌면 어떤 사람들은 PATH 환경 변수를 설정함으로써 문제를 해결하는 데 도움이 된다고 생각할 수도 있습니다. 그러나 명령을 직접 실행하는 경우(예: 시작 메뉴의 "실행" 메뉴 옵션에서) Windows 운영 체제는 일부 추가 위치에서 명령을 찾을 수 있습니다. 예를 들어 Windows XP 이상에서는 다음을 실행할 수 있습니다.

reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths"

실행하려는 명령이 "앱 경로" 아래에 나열되어 있으면 프로그램이 경로에 없더라도 Windows에서 프로그램을 찾을 수 있습니다. 따라서 Windows는 CMD가 사용하는 PATH에서 CMD가 찾는 것보다 더 많은 것을 찾을 가능성이 높습니다.

한 가지 가능한 이점은 %USERPROFILE%, %LOGONSERVER% 또는 %TEMP%/%TMP%와 같은 환경 변수를 참조할 수 있도록 CMD를 실행하려는 경우이지만 그렇게 하지 않기 때문에 " "을(를) 실행해야 합니다 CMD /C.

따라서 귀하의 특별한 경우에는 그렇게 할 이유가 없습니다. 귀하가 달성하는 효과는 컴퓨터가 더 많은 작업을 수행하고, 프로세스 속도를 늦추고, 더 많은 메모리를 사용하는 것입니다(이 모든 것은 현대 장비에서는 무시할 수 있는 양이지만).

답변2

착색이 없어지기 때문이죠.

사람들이 파란색 배경을 산만하게 생각한다고 생각하는 것일 수도 있습니다.

답변3

를 사용하면 cmd powershell현재 셸인 탐색기에 cmd powershell, "imageSeqView ..."에 대해 구문 분석된 값 %1이 있는 매개 변수를 사용하여 cmd를 호출하도록 요청합니다.

이 경우 "powershell"cmd는 cmd 명령, exe 또는 cmd가 지원하는 스크립트(예: bat) 중 하나일 것으로 예상합니다.

를 사용하면 powershell "imageSeqView ..."현재 셸인 탐색기에 구문 분석된 값 %1이 있는 powershell매개 변수를 사용 하여 powershell을 호출하도록 요청합니다.imageSeqView ...

이 경우 " imageSeqView"는 powershell에서 cmdlet, exe 또는 powershell 스크립트일 것으로 예상됩니다.

imageSeqView" "가 powershell 기능인 경우 첫 번째 방법은 완전히 불필요하며 성능이 약간 저하됩니다.

명령 창 옵션의 경우 cmd의 /K와 동일해야 하는 -NoExit와 같은 유사한 옵션이 powershell에 있습니다.

파이프 라이닝의 경우 환경 변수 초기화, powershell이 ​​동일하게 수행할 수 있습니다.

관련 정보