Personne ne sait comment 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.
Réponses
Trop de publicités?La première alias j'ai fait dès que j'ai commencé la personnalisation de mon profil dans le powershell est "qui".
New-Alias which get-command
Pour l'ajouter à votre profil, tapez ceci:
"`nNew-Alias which get-command" | add-content $profile
Le " n est de s'assurer qu'il va commencer une nouvelle ligne.
Ici est un *nix équivalent, c'est à dire qu'il donne des *nix-style de sortie.
Get-Command <your command> | Select-Object -ExpandProperty Definition
Il suffit de remplacer avec tout ce que vous cherchez.
PS C:\> Get-Command notepad.exe | Select-Object -ExpandProperty Definition
C:\Windows\system32\notepad.exe
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:
function which($name)
{
Get-Command $name | Select-Object -ExpandProperty Definition
}
Maintenant, lorsque vous rechargez votre profil, vous pouvez le faire:
PS C:\> which notepad
C:\Windows\system32\notepad.exe
J'ai l'habitude de taper:
gcm notepad
ou
gcm note*
gcm est l'alias par défaut pour la Commande Get-command.
Sur mon système, gcm remarque* sorties:
[27] » gcm note*
CommandType Name Definition
----------- ---- ----------
Application notepad.exe C:\WINDOWS\notepad.exe
Application notepad.exe C:\WINDOWS\system32\notepad.exe
Application Notepad2.exe C:\Utils\Notepad2.exe
Application Notepad2.ini C:\Utils\Notepad2.ini
Vous obtenez le répertoire et la commande qui correspond à ce que vous recherchez.
Ce qui semble faire ce que vous voulez (je l'ai trouvé sur http://huddledmasses.org/powershell-find-path/ )
Function Find-Path($Path, [switch]$All=$false, [Microsoft.PowerShell.Commands.TestPathType]$type="Any")
## You could comment out the function stuff and use it as a script instead, with this line:
# param($Path, [switch]$All=$false, [Microsoft.PowerShell.Commands.TestPathType]$type="Any")
if($(Test-Path $Path -Type $type)) {
return $path
} else {
[string[]]$paths = @($pwd);
$paths += "$pwd;$env:path".split(";")
$paths = Join-Path $paths $(Split-Path $Path -leaf) | ? { Test-Path $_ -Type $type }
if($paths.Length -gt 0) {
if($All) {
return $paths;
} else {
return $paths[0]
}
}
}
throw "Couldn't find a matching path of type $type"
}
Set-Alias find Find-Path