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

Ausgedruckt am: 23.11.2024 um 22:11 Uhr

145033
145033 08.08.2020 aktualisiert um 14:52:06 Uhr
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 08.08.2020 um 16:23:48 Uhr
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
Lösung 145033 08.08.2020 aktualisiert um 17:57:58 Uhr
Goto Top
Hmm, geht hier aber problemlos.
mayho33
mayho33 26.09.2020 um 15:16:45 Uhr
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