175 votes

L'équivalent PowerShell de la commande Unix `which` ?

Est-ce que PowerShell a un équivalent à la which que l'on trouve dans la plupart des shells Unix (si ce n'est tous) ?

Il y a un certain nombre de fois où j'aimerais connaître l'emplacement de quelque chose que j'exécute à partir de la ligne de commande. Sous Unix, je fais simplement which <command> et il me dit. Je ne trouve pas d'équivalent dans PowerShell.

1voto

Oly Dungey Points 246

De très bonnes réponses sur ce fil de discussion mais j'ai trouvé que les alias Powershell sont un peu pénibles à redéfinir et que les fonctions sont plus faciles à écrire. J'ai donc mis ceci dans mon profil Powershell :

function global:which ([string]$command) {
  if (-not($command)) { throw "ERROR: Please supply a command name" }
  (Get-Command $command).Path
}

0voto

jamacoe Points 133

Get-Command ne trouve pas les .lnk ou d'autres types, mais uniquement les commandes exécutables.

Pour rechercher dans $env:path un fichier quelconque (y compris les .lnk)

@(where.exe <file pattern> 2>$null)[0]

Renvoie une chaîne vide si rien n'a été trouvé, sinon le chemin complet de la première rencontre.

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