Je n'arrive pas à trouver quoi que ce soit à propos d'un équivalent de Powershell de la where
commande cmd
. Dois-je simplement l'appeler cmd
ou y a-t-il quelque chose de plus élégant dans PS?
62
Je n'arrive pas à trouver quoi que ce soit à propos d'un équivalent de Powershell de la where
commande cmd
. Dois-je simplement l'appeler cmd
ou y a-t-il quelque chose de plus élégant dans PS?
Réponses:
Utilisez la
Get-Command
commandlet en lui donnant le nom de l’exécutable. Il renseigne la propriété Path de l'objet renvoyé (de type ApplicationInfo ) avec le chemin d'accès entièrement résolu à l'exécutable.la source
gcm
lieu de taper leGet-Command
mot en entier à chaque foisgcm notepad
a fonctionné parfaitement pour moi quand je veux juste voir quel fichier j'appelle.Si vous souhaitez simplement disposer de la même fonctionnalité sans invoquer cmd, vous pouvez appeler à
where.exe
partir de powershell, tant que cela seC:\Windows\System32
trouve sur votre chemin. La commandewhere
(sans le fichier .exe) est associée à un alias. IndiquezWhere-Object
donc simplement le nom complet.la source
Get-ChildItem C:\SomeDir -Recurse *.dll
C'est à peu près ce que l'ancien where.exe fait ... 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 rechercher vos variables d'environnement PATH? Aucun problème.
la source
oh, you want to search your PATH environment variables too?
Euh, oui, c'est le point entier àwhere
, sinon vous pouvez simplement utiliserdir
. Der.:-P
where
n'est pas unecmd
commande intégrée . Il s'agit d'une application autonome (where.exe
), de sorte que PowerShell à proprement parler n'a pas besoin d'être remplacé.Alors, pourquoi ne
where
fonctionne pas dans PowerShell? Il semble ne rien faire:Par défaut, l'
where
alias est associé à une applet de commande PS intégrée.C'est bon à savoir, mais y a-t-il un moyen d'éviter d'appeler
where-object
lorsque vous essayez d'appelerwhere.exe
?La réponse est oui.
Option 1
Appeler
where.exe
avec extension. (Il s'agit d'un moyen pratique de résoudre d'autres problèmes d'aliasing et de priorisation des extensions de fichiers.)Option 2
Supprimer l'alias.
Notes de côté
La réponse de zdan propose d'utiliser
Get-Command
l'alternative. Bien qu'il soit un peu plus détaillé (même si vous utilisez l'gcm
alias par défaut ), il a des fonctionnalités plus riches quewhere.exe
. Si vous utilisez un script, faites attention aux différences subtiles entre les deux. Par exemple,where.exe
renvoie toutes les correspondances, alors queGet-Command
ne renvoie que le premier résultat à moins d'inclure le-TotalCount
paramètre facultatif .Enfin, si vous supprimez l'
where
alias par défaut , vous pouvez également envisager de le réaffecter en tant qu'aliasGet-Command
. (Mais cela aurait probablement un avantage douteux.)la source