mayho33
Goto Top

Mehrere Powershell-Versionen in Visual-Studio C-Sharp CmdLet-Project unterstützen

Hallo Alle,

In unserem Unternehmen gibt es leider einige Maschinen die noch mit Powershell 5.0 betankt sind, weil sie aufgrund von Abhängigkeiten einige Updates nicht empfangen dürfen.

Ich schreibe gerade ein CmdLet in C# und nutze dafür die Nuget-Extension Microsoft.PowerShell.5.1.ReferenceAssemblies. Die älteren Maschinen würden aber Microsoft.PowerShell.5.0.ReferenceAssemblies benötigen. Andernfalls bekomme ich einen sehr unschönen Fehler (Der Objekt-Verweis wurde nicht auf eine Object-Instanz festgelegt) und das CmdLet kann nicht verwendet werden.

Das Problem:
Ich kann nicht beide Microsoft.PowerShell.ReferenceAssemblies gemeinsam oder gleichzeitig nutzen, müsste also 2 Solutions erstellen und dann auch noch feststellen auf welcher Maschine ich welche Dll verwenden darf. Das ist sehr umständlich und nicht praktikabel.

Hat jemand eine Idee wie ich dieses Problem lösen kann?

Danke für die Unterstützung!

Mayho

Content-ID: 594832

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

Printed on: November 5, 2024 at 04:11 o'clock

145033
145033 Aug 08, 2020 updated at 12:52:06 (UTC)
Goto Top
Einfach den Common Namespace der niedrigsten Version importieren und die niedrigste zu unterstützende NET Framework Version für das Projekt auswählen.
https://www.powershellmagazine.com/2014/03/18/writing-a-powershell-modul ...
Dann läuft das auch auf den neueren PS Versionen.
mayho33
mayho33 Aug 08, 2020 at 14:23:48 (UTC)
Goto Top
Wäre logisch und habe ich anfangs auch so gemacht. Dann aber Bumm! Andere Maschine mit anderer PS-Version => Fehler

Deshalb habe ich die Microsoft.PowerShell.5.x.ReferenceAssemblies versucht. Machen ja nichts anderes wie in deinem Link angegeben. Das läuft aber eben nur solange gut wie das Target mitspielt.
145033
Solution 145033 Aug 08, 2020 updated at 15:57:58 (UTC)
Goto Top
Hmm, geht hier aber problemlos.
mayho33
mayho33 Sep 26, 2020 at 13:16:45 (UTC)
Goto Top
Zitat von @145033:

Hmm, geht hier aber problemlos.

Der FEhler lag wieder mal im Detail. Ich habe meinen Code ein klein wenig angepasst und jetzt flutscht es auf jeder Windows-Maschine, egal welche PS-Version vorhanden ist.

Danke für den Tipp!

Mayho