Vollständigen Pfad zur Binärdatei programmgesteuert in Powershell abrufen (which, where, Get-Command)

Vollständigen Pfad zur Binärdatei programmgesteuert in Powershell abrufen (which, where, Get-Command)

Wie erhalte ich den absoluten Pfad zu einer bestimmten Binärdatei und speichere ihn in einer Variablen?

Was entspricht dem Folgenden für Linux Bash in Windows Powershell?

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 ...

In Windows Powershell gibt es Get-Command, aber die Ausgabe lässt sich für ein Skript nicht so einfach programmgesteuert analysieren.

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>

Wie kann ich in Windows Powershell programmgesteuert den vollständigen Pfad zu einer bestimmten Binärdatei ermitteln, in einer Variablen speichern und ausführen?

Antwort1

Für den Beispielbefehl aus der OP-Frage:

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>

Sie können das Feld "Quelle" mit der folgenden Syntax extrahieren

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

Dann können Sie es auch in einer Variablen speichern und mit einem Et-Zeichen (&) vor der Variablen ausführen.

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 ...

verwandte Informationen