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.