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

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.


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 *

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

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

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.