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.

Herms
la source

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.

Nagul
la source
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
FLGMwt
la source
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.

Anonyme
la source
3
function which([string]$cmd) {gcm -ErrorAction "SilentlyContinue" $cmd | ft Definition}
hshen
la source