Je n'arrive pas à trouver quoi que ce soit sur un équivalent Powershell de la fonction where
à partir de cmd
. Devrais-je simplement l'appeler de cmd
ou existe-t-il quelque chose de plus élégant dans PS ?
Réponses
Trop de publicités?Utilisez le Get-Command
en lui passant le nom de l'exécutable. Elle remplit la propriété Path de l'objet retourné (de type ApplicationInfo ) avec le chemin d'accès entièrement résolu de l'exécutable.
# ~> (get-command notepad.exe).Path
C:\WINDOWS\system32\notepad.exe
Si vous cherchez simplement à avoir la même fonctionnalité sans invoquer cmd, vous pouvez appeler where.exe
à partir de powershell, tant que C:\Windows\System32
est sur votre chemin. La commande where
(sans le .exe) est aliasé en Where-Object
Il suffit donc de spécifier le nom complet.
PS C:\Users\alec> where
cmdlet Where-Object at command pipeline position 1
...
PS C:\Users\alec> where.exe
The syntax of this command is:
WHERE [/R dir] [/Q] [/F] [/T] pattern...
Get-ChildItem C:\SomeDir -Recurse *.dll
C'est à peu près ce que fait l'ancien where.exe... y avait-il une fonctionnalité plus spécifique que vous essayez d'imiter ?
Edit : En réponse au commentaire de Joshua... oh, vous voulez aussi chercher dans vos variables d'environnement PATH ? Pas de problème.
Foreach($_ In $Env:Path -Split ';')
{
Get-ChildItem $_ -Recurse *.dll
}
Qui a eu cette idée de définir des alias afin de ne pas appeler les exécutables du système présents dans PATH ?
Quoi qu'il en soit, la solution la plus fiable serait de définir un alias, comme j'en ai l'habitude :
PS H:\> Set-Alias which where.exe
PS H:\> which notepad
C:\Windows\System32\notepad.exe
C:\Windows\notepad.exe
PS H:\>