Pfad zu Powershell.exe (v 2.0)

114

Wo befindet sich die Powershell (Version 2.0)? Was ist der Pfad zu Powershell.exe? Ich habe Windows Server 2008 und Powershell installiert. Wenn ich mir diesen Ordner ansehe:

PS C:\Windows\System32\WindowsPowerShell> dir


    Directory: C:\Windows\System32\WindowsPowerShell


Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----         20.4.2010     17:09            v1.0

Ich habe nur Powershell v1.0. Aber wenn ich tippe

PS C:\> $Host.version

Major  Minor  Build  Revision
-----  -----  -----  --------
2      0      -1     -1


PS C:\>

Es zeigt, dass ich v2.0 installiert habe.

jjoras
quelle
8
Die oben gezeigte "v1.0" ist nur ein Verzeichnisname, keine tatsächliche Versionsnummer.
Doobop
Schauen Sie sich einfach den Zielort des PowerShell-Links an
oxfn

Antworten:

170

Ich glaube es ist in C:\Windows\System32\WindowsPowershell\v1.0\. Um die Unschuldigen zu verwirren, hat MS sie in einem Verzeichnis mit der Bezeichnung "v1.0" aufbewahrt. Wenn Sie dies unter Windows 7 ausführen und die Versionsnummer über $Host.Version( Installierte PowerShell-Version ermitteln ) überprüfen, wird angezeigt , dass es sich um 2.0 handelt.

Eine andere Option ist die Eingabe $PSVersionTablean der Eingabeaufforderung. Wenn Sie v2.0 ausführen, lautet die Ausgabe wie folgt:

Name                           Value
----                           -----
CLRVersion                     2.0.50727.4927
BuildVersion                   6.1.7600.16385
PSVersion                      2.0
WSManStackVersion              2.0
PSCompatibleVersions           {1.0, 2.0}
SerializationVersion           1.1.0.1
PSRemotingProtocolVersion      2.1

Wenn Sie Version 1.0 ausführen, ist die Variable nicht vorhanden und es erfolgt keine Ausgabe.

Lokalisierung PowerShell Version 1.0, 2.0, 3.0, 4.0:

  • 64-Bit-Version: C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \
  • 32-Bit-Version: C: \ Windows \ SysWOW64 \ WindowsPowerShell \ v1.0 \
Doobop
quelle
1
Vielleicht handelte es sich um fest codierte Pfade, mit denen die Kompatibilität erhalten bleiben sollte? Microsoft ist Microsoft
Tiago Leite
5
"Um die Unschuldigen zu verwirren" wird eines meiner Lieblingszitate sein.
Simlev
47

Ich denke, $ PsHome hat die Informationen, nach denen Sie suchen?

PS.> $ PsHome
C: \ Windows \ System32 \ WindowsPowerShell \ v1.0

PS.> Get-Help about_automatic_variables

THEMA
    about_Automatic_Variables ...

Simon B.
quelle
28

Hier ist eine Möglichkeit ...

(Get-Process powershell | select -First 1).Path

Hier ist möglicherweise ein besserer Weg, da er den ersten Treffer auf dem Pfad zurückgibt, genau wie wenn Sie Powershell über eine Eingabeaufforderung ausgeführt hätten ...

(Get-Command powershell.exe).Definition
Nathan Hartley
quelle
3
Für mich ist dies eine bessere Antwort als die derzeit bis zu 35 Stimmen. Die ursprüngliche Frage schien sich auf den Weg zur ausführbaren Datei zu beziehen, wobei Versionsinformationen der Frage beiliegen. Diese Antwort adressiert diese Frage direkt, umgeht sogar die "angebliche" Antwort und lässt eine Person genau herausfinden, wo sich die Exe auf ihrem eigenen System befindet, selbst wenn dieses System von der Standardeinstellung abweicht. (Dies ist, was ich hierher gesucht habe, also schätze ich es.)
Todd Walton
Die Suche basierend auf dem ausführbaren Wesen powershell.exeist etwas zu entspannt, da Sie leicht eine andere ausführbare Datei umbenennen powershell.exeund stattdessen diesen Prozess übernehmen können. Get-Process -Id $PIDwürde funktionieren, obwohl ich nicht sicher bin, in welcher Version $PIDeingeführt wurde.
Charles Grunwald
Ich sehe, dass Ihr "zu entspannter" Punkt jedoch bei Verwendung der $ PID den aktuellen Host zurückgibt, der möglicherweise kein Powershell-Interpreter ist. Wie zum Beispiel Powershell_ise.exe.
Nathan Hartley
Vielleicht haben sich die Eigenschaften seit November 2011 geändert. Für mich (im Juli 2016 unter Windows Server 2012) ist die Eigenschaft .Source nicht vorhanden. Stattdessen kann ich die Eigenschaft .Definition verwenden, die Folgendes zurückgibt: "C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ Powershell.exe". . Meine $ PSHome-Variable enthält: "C: \ Windows \ System32 \ WindowsPowerShell \ v1.0" Wenn Sie get-process verwenden, sollten Sie auch 'Powershell *' anstelle von Powershell verwenden, falls Sie Powershell_ise verwenden. HTH
Marcelo Finki
Die Antwort wurde von .Source auf .Definition geändert.
Nathan Hartley
12

Es ist immer C: \ Windows \ System32 \ WindowsPowershell \ v1.0. Es wurde so belassen, weil die Abwärtskompatibilität das ist, was ich irgendwo gehört oder gelesen habe.

Ravikanth
quelle
2
% SystemRoot% \ system32 \ WindowsPowerShell \ v1.0 \ Powershell.exe. Falls SystemRoot nicht "C: \ Windows" ist
Matthew