L'équivalent de *Nix " qui " commande PowerShell?
Comment puis-je demander PowerShell où quelque chose est?
Par exemple, "qui bloc-notes" et il renvoie le répertoire où l'notepad.exe est exécuté à partir d'selon les chemins actuels.
Vous devez vous connecter pour publier un commentaire.
La première alias j'ai fait dès que j'ai commencé la personnalisation de mon profil dans le PowerShell est "qui".
Pour l'ajouter à votre profil, tapez ceci:
Le " n au début de la dernière ligne est de s'assurer qu'il va commencer une nouvelle ligne.
Get-Command <command> | Format-Table Path, Name
afin que je puisse obtenir le chemin d'accès où la commande est trop.select -expandproperty Path
.which()
de la fonction définie par Terraindu solution est sensiblement supérieur à tout sur l'offre ici. Si ce n'est pas l'équivalent d'Unixwhich
, ce n'est pas la bonne réponse.(gcm <command>).definition
pour obtenir le chemin d'accès(s) seulement.gcm
est l'alias par défaut pourGet-Command
. Vous pouvez également utiliser des caractères génériques, par exemple:(gcm win*.exe).definition
.Ici est en fait un *nix équivalent, c'est à dire qu'il donne des *nix-style de sortie.
Il suffit de remplacer avec tout ce que vous cherchez pour.
Lorsque vous l'ajoutez à votre profil, vous voulez utiliser une fonction plutôt qu'un pseudonyme parce que vous ne pouvez pas utiliser des alias avec des tuyaux:
Maintenant, lorsque vous rechargez votre profil, vous pouvez le faire:
okta
qui pointe vers un script Powershell nomméokta.ps1
qui n'est pas sur mon$PATH
. À l'aide de la accepté de répondre retourne le nom du script (okta -> okta.ps1
). C'est OK, mais il ne me donne pas l'emplacement deokta.ps1
. À l'aide de cette réponse, cependant, me donne le chemin complet (C:\Users\blah\etc\scripts\okta.ps1
). Donc +1 à partir de moi.J'ai l'habitude de taper:
ou
gcm est l'alias par défaut pour la Commande Get-command.
Sur mon système, gcm remarque* sorties:
Vous obtenez le répertoire et la commande qui correspond à ce que vous recherchez.
gcm note* | select CommandType, Name, Definition
. Si vous l'exécutez souvent, vous devriez probablement l'envelopper dans une fonction, si.Essayez cet exemple:
(gcm py.exe).path
Ma proposition pour la fonction:
Ce qui semble faire ce que vous voulez (je l'ai trouvé sur http://huddledmasses.org/powershell-find-path/):
Cochez cette PowerShell Qui.
Le code à condition qu'il suggère ceci:
Essayer le
de commande sur Windows 2003 ou plus tard (ou Windows 2000/XP si vous avez installé un Kit de Ressources).
BTW, ce reçu plus de réponses à d'autres questions:
Est-il un équivalent de " qui " sur Windows?
PowerShell équivalent Unix
qui
commande?where
des alias pour lesWhere-Object
commandlet dans Powershell, donc en tapantwhere <item>
dans une invite de Powershell donne rien. Cette réponse est donc tout à fait incorrect - comme indiqué dans la accepté de répondre à la première question liée, pour obtenir le DOSwhere
, vous devez taperwhere.exe <item>
.Rapide et sale match pour Unix
which
estMais il renvoie plusieurs lignes, si elles existent alors il devient
where.exe where
devrait vous direC:\Windows\System32\where.exe
where.exe
est équivalent àwhich -a
, car il va donner en retour tous correspondance de fichiers exécutables, et pas seulement le premier à être exécuté. C'est,where.exe notepad
donnec:\windows\notepad.exe
etc:\windows\system32\notepad.exe
. C'est donc particulièrement pas adapté pour la forme$(which command)
. (Un autre problème est qu'il va imprimer un de gentil, serviable message d'erreur si la commande n'est pas trouvée, ce qui permettra également de ne pas s'étendre bien au$()
, qui peuvent être remédié avec/Q
, mais pas comme un alias.)J'aime
Get-Command | Format-List
, ou le plus court, en utilisant des alias pour les deux, et seulement pour lespowershell.exe
:Vous pouvez trouver des alias comme ceci:
Onglet travaux d'achèvement avec
gcm
.J'ai cette
which
fonction avancée dans mon PowerShell profil:Utilisation:
Ou cette version, l'appel de l'original, où commande.
Cette version fonctionne mieux, car il n'est pas limité à des fichiers bat: