Equivalent PowerShell de la commande `Quelle` de Unix?


69

PowerShell a-t-il un équivalent à la whichcommande trouvée dans la plupart (sinon la totalité) des shells Unix?

Plusieurs fois, j'aimerais savoir l'emplacement de quelque chose que je lance en ligne de commande. Sous Unix, je le fais which <command>, et ça me dit. Je ne trouve pas d'équivalent dans PowerShell.

Réponses:


71

Cela a été demandé et répondu sur Stack Overflow: Équivalent de * Nix 'quelle' commande dans PowerShell?

Le tout premier alias que j'ai créé une fois que j'ai commencé à personnaliser mon profil dans PowerShell était "qui".

New-Alias ​​qui get-command

Pour ajouter ceci à votre profil, tapez ceci:

"` nNew-Alias ​​qui get-command "| profil add-content $

Le `n au début de la dernière ligne est d’assurer que celle-ci commence par une nouvelle ligne.


35

À partir de PowerShell 3.0, vous pouvez faire

(Get-Command cmd).Path

Ce qui a également l'avantage sur la vanille de Get-Command de renvoyer un System.Stringafin que vous obteniez une sortie de ligne nette * nixy comme vous le feriez peut-être. En utilisant l’alias gcm, nous pouvons le réduire à 11 caractères.

(gcm cmd).Path

4
Si Get-Commandtrouve plusieurs résultats, il retourne un tableau. De plus, si la commande trouvée n'est pas un exécutable, Pathindéfini ( $null). Cela rend la réponse impossible ici pour une utilisation générale sans modification lourde. Pour un bon exemple de ces deux cas, essayez Get-Command where.
jpmc26

1
Cela devrait être la réponse acceptée, car elle vous indique réellement quel est l'équivalent Powershell de la commande * NIX whereplutôt que de vous apprendre à définir des alias sur Powershell, ce qui n'est pas le titre de la question.
mastazi

3
@mastazi: Mais cela ne fonctionne pas pour builtins, ce qui est une régression par rapport à , par exemple zsh de which. ( D' whereailleurs, est en fait un de Windows utilitaire qui peut faire un certain nombre de choses différentes, dont à peu près se rapproche de la recherche d'une commande le long de la PATH.) En outre, il n'y a rien de mal avec une réponse qui explique comment faire ce qui a été demandé et également une autre chose légèrement plus compliquée construite sur ce point.
SamB

7

Également répondu en 2008: existe-t-il un équivalent de "qui" sur la ligne de commande Windows?

Essayez la wherecommande si vous avez installé un kit de ressources.

Les parties les plus importantes de la réponse:

Windows Server 2003 et versions ultérieures fournissent la WHEREcommande qui fait une partie de ce qui fait, bien qu'elle corresponde à tous les types de fichiers, pas seulement aux commandes exécutables.

[couper]

Dans Windows PowerShell, vous devez taper where.exe.


3
function which([string]$cmd) {gcm -ErrorAction "SilentlyContinue" $cmd | ft Definition}
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.