powershell에서 cmd의 "where"와 동일


답변:


59

Get-Command커맨드 렛을 사용하여 실행 파일 이름을 전달하십시오. 반환 된 객체 ( ApplicationInfo 유형 ) 의 Path 속성을 실행 파일에 대한 완전히 확인 된 경로로 채 웁니다 .

# ~> (get-command notepad.exe).Path
C:\WINDOWS\system32\notepad.exe

8
이것을 많이 사용한다면 매번 단어 gcm전체를 입력하는 대신 명령을 생략 할 수 있습니다.Get-Command
Moshe Katz

@MosheKatz 감사합니다! gcm notepad내가 전화하는 파일을보고 싶을 때 완벽하게 작동했습니다.
Shawn Wang

1
그리고 이것이 남자와 여자, 당신이 이미 옳은 유용한 것들을 지나치게 복잡하게 만드는 방법입니다. 손상되지 않은 경우 수정하지 마십시오.
AFP_555

이 명령에 대단히 감사합니다. 경로를 하드 코딩하지 않고 Add-Type을 사용할 수 있습니다.
Jason TEPOORTEN

22

cmd를 호출하지 않고 동일한 기능을 원한다면 경로에있는 where.exe한 powershell에서 전화 할 수 있습니다 C:\Windows\System32. where.exe가없는 명령의 별칭은 Where-Object이므로 전체 이름 만 지정하십시오.

PS C:\Users\alec> where
cmdlet Where-Object at command pipeline position 1
...

PS C:\Users\alec> where.exe
The syntax of this command is:

WHERE [/R dir] [/Q] [/F] [/T] pattern...

8

Get-ChildItem C:\SomeDir -Recurse *.dll

이전 where.exe가하는 것과 거의 비슷합니다. 모방하려는 특정 기능이 있습니까?

편집 : Joshua의 의견에 응답하여 ... 아, PATH 환경 변수도 검색하고 싶습니까? 문제 없어요.

Foreach($_ In $Env:Path -Split ';')
{
    Get-ChildItem $_ -Recurse *.dll
}

1
"여기서"또한뿐만 아니라 경로를 검색
여호수아 맥키

3
oh, you want to search your PATH environment variables too? 음, 그래, 그게의 전체 지점where그렇지 않으면 당신은 사용할 수 있습니다 dir. 데르. :-P
Synetech

3

where내장 cmd명령 이 아닙니다 . 독립 실행 형 응용 프로그램 ( where.exe)이므로 엄밀히 말해 PowerShell에는 "대체가 필요하지 않습니다".

그렇다면 wherePowerShell에서 왜 작동하지 않습니까? 아무것도하지 않는 것 같습니다 :

PS C:\> where where
PS C:\>

기본적으로 기본 제공 wherePS cmdlet의 별칭입니다.

PS C:\> get-help where

NAME
    Where-Object
...
ALIASES
    where
    ?

알다시피, 전화를 걸 where-object때 전화를 피하는 방법이 where.exe있습니까?

대답은 그렇습니다.

옵션 1

where.exe내선 번호로 전화하십시오 . (이것은 다른 앨리어싱 및 파일 확장자 우선 순위 문제를 해결하는 편리한 방법입니다.)

PS C:\> where.exe where
C:\Windows\System32\where.exe

옵션 2

별명을 제거하십시오.

PS C:\> Remove-Item alias:\where -Force
PS C:\> where where
C:\Windows\System32\where.exe

사이드 노트

zdan의 답변Get-Command대안으로 사용하도록 제안합니다 . 기본 gcm별칭을 사용하는 경우에도 조금 더 장황하지만 where.exe. 스크립팅에 사용되는 경우이 둘의 미묘한 차이점에주의하십시오. 예를 들어 선택적 매개 변수 를 포함하지 않으면 첫 번째 결과 만 반환 where.exe하는 반면 예를 들어 모든 일치 항목이 Get-Command반환됩니다 -TotalCount.

PS C:\> where.exe notepad
C:\Windows\System32\notepad.exe
C:\Windows\notepad.exe
PS C:\> (gcm notepad).Path
C:\WINDOWS\system32\notepad.exe
PS C:\> (gcm notepad -TotalCount 5).Path
C:\WINDOWS\system32\notepad.exe
C:\WINDOWS\notepad.exe
PS C:\>

마지막으로 기본 where별칭 을 제거 하면이 별칭을에 별칭으로 다시 할당하는 것도 고려할 수 있습니다 Get-Command. (그러나 이것은 아마도 모호한 이익이 될 것입니다.)

PS C:\> Set-Alias where Get-Command
PS C:\> where notepad

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Application     notepad.exe                                        10.0.15... C:\WINDOWS\system32\notepad.exe


PS C:\> (where notepad).Path
C:\WINDOWS\system32\notepad.exe
PS C:\>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.