517 Stimmen

Äquivalent zum *Nix-Befehl "which" in PowerShell?

Wie kann ich PowerShell fragen, wo etwas ist?

Zum Beispiel: "which notepad" und es wird das Verzeichnis zurückgegeben, in dem die notepad.exe entsprechend den aktuellen Pfaden ausgeführt wird.

11voto

Chris F Carroll Punkte 9273

Eine schnelle und unkomplizierte Übereinstimmung mit Unix which est

New-Alias which where.exe

Aber es werden mehrere Zeilen zurückgegeben, wenn sie existieren, so dass es dann zu

function which {where.exe command | select -first 1}

8voto

js2010 Punkte 17269

Ich mag Get-Command | Format-List oder kürzer, unter Verwendung von Aliasnamen für die beiden und nur für powershell.exe :

gcm powershell | fl

Sie können Aliase wie diesen finden:

alias -definition Format-List

Die Tabulatorvervollständigung funktioniert mit gcm .

Damit die Registerkarte alle Optionen auf einmal auflistet:

set-psreadlineoption -editmode emacs

3voto

tzot Punkte 86792

Prüfen Sie dies PowerShell Welche .

Der dort angegebene Code legt dies nahe:

($Env:Path).Split(";") | Get-ChildItem -filter notepad.exe

3voto

Nicholas Punkte 565

Dies scheint das zu tun, was Sie wollen (ich fand es auf 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

2voto

Anonymous Punkte 37

Versuchen Sie die where auf Windows 2003 oder höher (oder Windows 2000/XP, wenn Sie ein Resource Kit installiert haben).

Diese Frage wurde übrigens bereits in anderen Fragen beantwortet:

Gibt es ein Äquivalent für "welches" unter Windows?

PowerShell-Äquivalent zu Unix which Befehl?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X