emeriks
Goto Top

PowerShell - Restart als Version 2 - Oder Fehler in PSVersionTable.PSVersion

Hi,
in Anlehnung an meine Frage: PowerShell - Registry x64

Ich versuche, auch einem Script heraus festzustellen, ob die PS in v2 läuft, und wenn nicht, diese erneut als v2 zu starten. Auf einem Rechner geht es, auch einemm anderen nicht.
--> s.u. Ausgaben

Beide Rechner sind Windows Server 2008 R2 SP1
Bei beiden ist die powershell .exe vom 27.09.2013 04:13.

Spielt das .Net hier ne Rolle?
Wo es geht: .Net 4.5
Wo es nicht geht: .Net 4.7

Wenn ich auf dem Rechner, wo es nicht geht, per Desktop-Verknüpfung die PS mit "-Version 2" starte, dann steht zwar in der Titelleiste des Fensters "powershell v2", aber $PSVersionTable.PSVersion liefert weiter Version 4.

E.

Edit:
Auch Get-Host meldet dann noch Version 4.
Auf dem anderen Rechner, wo es funktioniert, meldet dann auch Get-Host v2.


Wo es geht:
PS C:\> $PSVersionTable.PSVersion

Major  Minor  Build  Revision
-----  -----  -----  --------
4      0      -1     -1

PS C:\> $Pspath = $PSHOME + "\powershell.exe"  
PS C:\> ."$PSpath" -Version 2  
Windows PowerShell
Copyright (C) 2009 Microsoft Corporation. Alle Rechte vorbehalten.

PS C:\> $PSVersionTable.PSVersion

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

Wo es nicht geht:
PS C:\> $PSVersionTable.PSVersion

Major  Minor  Build  Revision
-----  -----  -----  --------
4      0      -1     -1

PS C:\> $Pspath = $PSHOME + "\powershell.exe"  
PS C:\> ."$PSpath" -Version 2  
Windows PowerShell
Copyright (C) 2009 Microsoft Corporation. Alle Rechte vorbehalten.

PS C:\> $PSVersionTable.PSVersion

Major  Minor  Build  Revision
-----  -----  -----  --------
4      0      -1     -1

Content-ID: 364752

Url: https://administrator.de/forum/powershell-restart-als-version-2-oder-fehler-in-psversiontable-psversion-364752.html

Ausgedruckt am: 31.03.2025 um 15:03 Uhr

NetzwerkDude
NetzwerkDude 14.02.2018 um 12:16:57 Uhr
Goto Top
Ich hab keinen Server 2008 R2 zur hand, aber scheinbar muss man da die PSv2 erst aktivieren:
https://stackoverflow.com/questions/13864429/how-to-run-powershell-v3-co ...
135333
135333 14.02.2018 aktualisiert um 12:18:52 Uhr
Goto Top
Stichwort Dot-Sourcing. Mach es besser mit start-process.

Gruß Snap
emeriks
emeriks 14.02.2018 aktualisiert um 12:25:12 Uhr
Goto Top
Ich hab keinen Server 2008 R2 zur hand, aber scheinbar muss man da die PSv2 erst aktivieren:
Die v2 ist drauf, sonst würden die Shell von Exchange 2010 nicht laufen.
Er läuft dann auch in v2. Nur - ich kann das nicht abfragen. Wie kann ich das feststellen? Da bin ich mir jetzt nicht mehr sicher ...
emeriks
emeriks 14.02.2018 um 12:22:24 Uhr
Goto Top
Zitat von @135333:
Stichwort Dot-Sourcing. Mach es besser mit start-process.
Danke, aber das ändert hier überhaupt nichts. In meinem Script nutze ich aber tatsächlich "Start-Process".
NetzwerkDude
NetzwerkDude 14.02.2018 um 12:29:49 Uhr
Goto Top
Wie reagiert er darauf wenn du ihm ein skript gibst mit:
#Requires -Version 4.0
emeriks
emeriks 14.02.2018 um 12:32:03 Uhr
Goto Top
Wie reagiert er darauf wenn du ihm ein skript gibst mit:
#Requires -Version 4.0
Also erstmal brauche ich Version 2.
Und dieses #Requires funktioniert meines Wissens erst ab PS 5.
135333
135333 14.02.2018 aktualisiert um 12:33:50 Uhr
Goto Top
Hier geht's auf einem Server 2008R2 inkl. Exchange

screenshot
NetzwerkDude
NetzwerkDude 14.02.2018 um 12:36:05 Uhr
Goto Top
Dachte eher daran ob das #Reqires nicht an anderer stelle prüft als $PS-Version oder Get-Host, d.h. es würde dann "meckern" das kein v4 vorliegt wenn im v2 modus gestartet.
Aber wenns erst ab v5 geht...