Was entspricht Windows dem Befehl "which" in Unix? Gibt es einen entsprechenden PowerShell-Befehl?

Antworten:

79

Einige Windows-Versionen (ich denke Windows 2003 und höher) haben den Befehl where:

c:\>where ping
C:\Windows\System32\PING.EXE
Randy Levy
quelle
5
whereArbeit für mich in Windows 7
Nam G VU
6
Dies funktioniert nur in cmd, nicht in PowerShell (nach meiner Erfahrung)
Thomas
where /r c:\ fileNameDurch das Hinzufügen von / rc: \ konnte ich eine rekursive Suche ausführen, die im Stammverzeichnis des Laufwerks C unter Windows 7 Professional beginnt. Offenbar befindet
CrandellWS
6
in Powershell sollten Sie sagen, where.exe pingweil wherestandardmäßig Cmdlet, Where-Objectdie völlig andere Geschichte ist
Maoizm
where.exeexplizit, anstatt wherefür mich in PowerShell zu arbeiten
drkvogel
36

Ja, Get-Commandfindet alle Befehle einschließlich ausführbarer Dateien:

PS\> Get-Command ipconfig

Wenn Sie die Befehle auf nur ausführbare Dateien beschränken möchten:

PS\> Get-Command -CommandType Application

Findet alle Exes auf deinem Weg. Es gibt einen Alias ​​für die interaktive Verwendung:

PS\> gcm net* -CommandType Application

Um den Pfad einer ausführbaren Datei abzurufen, können Sie die PathEigenschaft des zurückgegebenen Objekts verwenden. Zum Beispiel:

PS\> (Get-Command notepad.exe).Path

Weitere Informationen erhalten Sie, wenn Sie ausführen man Get-Command -full.

user10404
quelle
2

Zusätzlich zu user10404 kann der Befehl help auch für Aliase verwendet werden, sodass Sie für die Hilfe und die interaktive Verwendung denselben Befehlsnamen (gcm) verwenden können:

help gcm -Parameter *
# or
man gcm -Par *
yzorg
quelle
2

Wenn Sie es kurz machen möchten, erstellen Sie eine one line which.cmd-Datei mit dem Inhalt

echo %~$PATH:1

Dadurch wird der erste Parameter (% 1) durchsucht, der dem Skript zugeführt wird, und der vollständige Pfad der gefundenen Datei wird angezeigt. Ein guter Ort, um dieses Skript in Windows 10 einzufügen, ist% LOCALAPPDATA% \ Microsoft \ WindowsApps \ which.cmd

Und du bekommst deinen welchen Befehl im Pfad.

c:\>which cmd.exe

c:\>echo C:\Windows\System32\cmd.exe
C:\Windows\System32\cmd.exe
Manu
quelle
1

where.exewhereIn PowerShell funktioniert dies ausdrücklich nicht :

PS C:\Users\birdc> where ping
PS C:\Users\birdc> where.exe ping
C:\Windows\System32\PING.EXE
Drkvogel
quelle
Funktioniert unter Windows 10 1903.
Ultrasonic54321
In PowerShell? Ich arbeite unter Windows 10 Pro 1903 und where pinghabe nichts mit PowerShell zu tun.
Drkvogel
Entschuldigung, ich war unklar. Ich meinte where.exe.
Ultrasonic54321