517 Stimmen

Äquivalent zum *Nix-Befehl "which" in PowerShell?

Wie kann ich PowerShell fragen, wo etwas ist?

Zum Beispiel: "which notepad" und es wird das Verzeichnis zurückgegeben, in dem die notepad.exe entsprechend den aktuellen Pfaden ausgeführt wird.

507voto

halr9000 Punkte 9579

Der allererste Alias, den ich erstellt habe, als ich anfing, mein Profil in PowerShell anzupassen, war "which".

New-Alias which get-command

Um dies zu Ihrem Profil hinzuzufügen, geben Sie dies ein:

"`nNew-Alias which get-command" | add-content $profile

Das `n am Anfang der letzten Zeile soll sicherstellen, dass sie als neue Zeile beginnt.

204voto

petrsnd Punkte 5906

Hier ist ein tatsächliches *nix-Äquivalent, d.h. es gibt eine Ausgabe im *nix-Stil.

Get-Command <your command> | Select-Object -ExpandProperty Definition

Ersetzen Sie sie einfach durch das, wonach Sie suchen.

PS C:\> Get-Command notepad.exe | Select-Object -ExpandProperty Definition
C:\Windows\system32\notepad.exe

Wenn Sie es zu Ihrem Profil hinzufügen, sollten Sie eine Funktion und keinen Alias verwenden, da Sie Aliase nicht mit Pipes verwenden können:

function which($name)
{
    Get-Command $name | Select-Object -ExpandProperty Definition
}

Wenn Sie nun Ihr Profil neu laden, können Sie dies tun:

PS C:\> which notepad
C:\Windows\system32\notepad.exe

117voto

David Mohundro Punkte 11297

Normalerweise tippe ich einfach:

gcm notepad

oder

gcm note*

gcm ist der Standardalias für Get-Command.

Auf meinem System gibt gcm note* aus:

[27] » gcm note*

CommandType     Name                                                     Definition
-----------     ----                                                     ----------
Application     notepad.exe                                              C:\WINDOWS\notepad.exe
Application     notepad.exe                                              C:\WINDOWS\system32\notepad.exe
Application     Notepad2.exe                                             C:\Utils\Notepad2.exe
Application     Notepad2.ini                                             C:\Utils\Notepad2.ini

Sie erhalten das Verzeichnis und den Befehl, der dem Gesuchten entspricht.

45voto

thesqldev Punkte 431

Versuchen Sie dieses Beispiel:

(Get-Command notepad.exe).Path

13voto

VortiFred Punkte 91

Mein Vorschlag für die Funktion Which:

function which($cmd) { get-command $cmd | % { $_.Path } }

PS C:\> which devcon

C:\local\code\bin\devcon.exe

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X