프로그래밍 방식으로 powershell에서 바이너리에 대한 전체 경로 가져오기(여기서 Get-Command)

프로그래밍 방식으로 powershell에서 바이너리에 대한 전체 경로 가져오기(여기서 Get-Command)

주어진 바이너리에 대한 절대 경로를 어떻게 얻고 이를 변수에 저장합니까?

Windows Powershell의 Linux Bash에 대해 다음과 동일한 것은 무엇입니까?

user@disp985:~$ path=`which gpg`
user@disp985:~$ echo $path
/usr/bin/gpg
user@disp985:~$ 

user@disp985:~$ $path
gpg: keybox '/home/user/.gnupg/pubring.kbx' created
gpg: WARNING: no command supplied.  Trying to guess what you mean ...
gpg: Go ahead and type your message ...

Windows Powershell에는 가 있지만 Get-Command스크립트에 대해 프로그래밍 방식으로 구문 분석하기에는 출력이 쉽지 않습니다.

PS C:\Users\user> Get-Command gpg.exe
 
CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Application     gpg.exe                                            2.2.28.... C:\Program Files (x86)\Gpg4win\..\GnuP...
 
 
PS C:\Users\user>

Windows Powershell에서 특정 바이너리에 대한 전체 경로를 프로그래밍 방식으로 확인하고 이를 변수에 저장하고 실행하려면 어떻게 해야 합니까?

답변1

OP 질문에 제공된 예제 명령의 경우:

PS C:\Users\user> Get-Command gpg.exe
 
CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Application     gpg.exe                                            2.2.28.... C:\Program Files (x86)\Gpg4win\..\GnuP...
 
 
PS C:\Users\user>

다음 구문을 사용하여 "소스" 필드를 추출할 수 있습니다.

PS C:\Users\user> $(Get-Command gpg.exe).Source
C:\Program Files (x86)\Gpg4win\..\GnuPG\bin\gpg.exe

그런 다음 변수에 저장하고 변수 앞에 앰퍼샌드(&)를 사용하여 실행할 수도 있습니다.

PS C:\Users\user> $path=$(Get-Command gpg.exe).Source
PS C:\Users\user> echo $path
C:\Program Files (x86)\Gpg4win\..\GnuPG\bin\gpg.exe
PS C:\Users\user> & $path
gpg: WARNING: no command supplied.  Trying to guess what you mean ...
gpg: Go ahead and type your message ...

관련 정보