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-Key: 364752

Url: https://administrator.de/contentid/364752

Printed on: April 27, 2024 at 04:04 o'clock

Member: NetzwerkDude
NetzwerkDude Feb 14, 2018 at 11:16:57 (UTC)
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 ...
Mitglied: 135333
135333 Feb 14, 2018 updated at 11:18:52 (UTC)
Goto Top
Stichwort Dot-Sourcing. Mach es besser mit start-process.

Gruß Snap
Member: emeriks
emeriks Feb 14, 2018 updated at 11:25:12 (UTC)
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 ...
Member: emeriks
emeriks Feb 14, 2018 at 11:22:24 (UTC)
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".
Member: NetzwerkDude
NetzwerkDude Feb 14, 2018 at 11:29:49 (UTC)
Goto Top
Wie reagiert er darauf wenn du ihm ein skript gibst mit:
#Requires -Version 4.0
Member: emeriks
emeriks Feb 14, 2018 at 11:32:03 (UTC)
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.
Mitglied: 135333
135333 Feb 14, 2018 updated at 11:33:50 (UTC)
Goto Top
Hier geht's auf einem Server 2008R2 inkl. Exchange

screenshot
Member: NetzwerkDude
NetzwerkDude Feb 14, 2018 at 11:36:05 (UTC)
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...