Quel est l'équivalent Windows de la commande "qui" sous Unix? Existe-t-il une commande PowerShell équivalente?

Réponses:

79

Certaines versions de Windows (je pense que Windows 2003 et versions ultérieures) ont la commande where:

c:\>where ping
C:\Windows\System32\PING.EXE
Randy Levy
la source
5
wheretravaille pour moi dans Windows 7
Nam G VU
6
Cela ne fonctionne que dans cmd, pas dans PowerShell (selon mon expérience)
Thomas
where /r c:\ fileNamel'ajout de / rc: \ m'a permis d'effectuer une recherche récursive à partir de la racine du lecteur C sous Windows 7 Professionnel, mais il semble que ce ne soit pas dans access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/…
CrandellWS
6
dans Powershell, vous devriez le dire where.exe pingcar wherec'est par défaut un alias de la Where-Objectcmdlet qui est une histoire complètement différente
maoizm
where.exeexplicitement plutôt que ne wherefonctionne pour moi dans PowerShell
drkvogel
36

Oui, vous Get-Commandtrouverez toutes les commandes, y compris les exécutables:

PS\> Get-Command ipconfig

Si vous voulez limiter les commandes aux exécutables uniquement:

PS\> Get-Command -CommandType Application

Trouvera tous les ex sur votre chemin. Il existe un alias pour une utilisation interactive:

PS\> gcm net* -CommandType Application

Pour obtenir le chemin d'un exécutable, vous pouvez utiliser la Pathpropriété de l'objet renvoyé. Par exemple:

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

Pour plus d'informations, lancez man Get-Command -full.

utilisateur10404
la source
2

En plus de user10404, la commande help fonctionnera sur les alias. Vous pourrez donc utiliser le même nom de commande (gcm) pour obtenir une aide et une utilisation interactive:

help gcm -Parameter *
# or
man gcm -Par *
Yzorg
la source
2

Si vous voulez le rendre bref, créez un fichier one.cmd avec le contenu.

echo %~$PATH:1

Ceci recherchera le premier paramètre (% 1) introduit dans le script et affichera le chemin complet du fichier trouvé. Le bon endroit pour placer ce script dans Windows 10 est% LOCALAPPDATA% \ Microsoft \ WindowsApps \ which.cmd

Et vous obtenez votre commande dans le chemin.

c:\>which cmd.exe

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

where.exeexplicitement plutôt que ne wherefonctionne pour moi dans PowerShell:

PS C:\Users\birdc> where ping
PS C:\Users\birdc> where.exe ping
C:\Windows\System32\PING.EXE
drkvogel
la source
Fonctionne sur Windows 10 1903.
Ultrasonic54321
Dans PowerShell? Je suis sous Windows 10 Pro 1903 et where pingne me donne rien dans PowerShell.
drkvogel le
Désolé je n'étais pas clair. Je voulais dire where.exe.
Ultrasonic54321