180 votes

Equivalent du "where" de cmd dans powershell

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 ?

190voto

alex77 Points 298

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

52voto

mopsled Points 641

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...

8voto

Ryan Ries Points 512

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
}

3voto

Les deux sites Path y Source de Get-Command travailler de la même manière

> (Get-Command notepad).Path
C:\windows\system32\notepad.exe
> (Get-Command notepad).Source
C:\windows\system32\notepad.exe

1voto

Gerrit Haase Points 11

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:\>

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X