mayho33
Goto Top

C-Sharp mit SCCM "verbinden"

Hi @ All

Ich versuche gerade in C# via Visual Studio eine Verbindung zum System Center Configuration Manager herzustellen wie man es normalerweise in der CCM-Console auf diese weise macht:
ccm connect

Danach wird (in meinem Fall) die ISE geöffnet und man führt das Script aus:
ccm connect2

Anschließend sind alle Cmdlets geladen und man kann z.B. das machen:

$ts = Get-CMTaskSequence | ? {$_.Name -like 'MyTaskSequenceName'}  

Das Problem:

Ich habe keine Ahnung wie ich Powershell-like (oder auch anders) aus C# heraus eine Verbindung zur CCM-Console herstellen kann.

A) weil je nachdem ob in Domain A oder Domain B der SCCM unterschiedlich aufgebaut sein kann, sprich, bei den einen ist er auf C:\ installiert, bei den anderen wieder auf D:\, usw. Also eine sichere Methode die "ConfigurationManager.psd1" zu importieren

B) ich nicht sicher bin ob es wirklich reicht nur die CmdLets zu importieren. In meinen Versuchen hat sich da nichts getan bzw. traten Fehler auf beim Ausführen ala diesem Snipped (item.Value = Pfad zur ConfigurationManager.psd1):
powershell.Commands.AddCommand("Import-Module").AddParameter(item.Value);  
powershell.Invoke();

Eure Frage wird sein: Warum verdammt nochmal in C# ??

Ganz einfach! Ich habe mehrere ziemlich komplizierte Class_Models zum Serialisieren und Deserialisieren von XML's (darunter SWID-Tag siehe: https://tagvault.org/ ) und es ist mir echt zu blöd kilometerweise Code in Powershell zu schreiben nur damit die Nodes, Elemente und Attribute richtig benannt sind.

Hat jemand eine Idee bzw. Tipps zu meinem Problem?

Vielen Dank!

mayho

Content-Key: 447044

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

Printed on: April 24, 2024 at 10:04 o'clock

Mitglied: 139374
139374 May 02, 2019 at 14:35:35 (UTC)
Goto Top
Da gibt's was von Ratiopharm
https://github.com/rzander/sccmclictrlib
Member: Th0mKa
Th0mKa May 02, 2019 at 15:09:39 (UTC)
Goto Top
Zitat von @mayho33:

und es ist mir echt zu blöd kilometerweise Code in Powershell zu schreiben nur damit die Nodes, Elemente und Attribute richtig benannt sind.

Versuche es mal andersrum, du kannst in Powershell Scripten einfach C# Code verwenden.

/Thomas
Member: mayho33
mayho33 May 03, 2019 at 07:40:47 (UTC)
Goto Top
Zitat von @139374:

Da gibt's was von Ratiopharm
https://github.com/rzander/sccmclictrlib

Danke @139374 Das schaue ich mir mal an.

Zitat von @mayho33:

Versuche es mal andersrum, du kannst in Powershell Scripten einfach C# Code verwenden.

/Thomas

Jaaaaa...schon klar...und nützlich. Je weniger aber in irgendwelchen Dateien runschwirrt, umso weniger kann verloren gehen. Wenn ich mir also vorstelle dass da eine *.ps1, eeine *.psm1 und dann auch noch eine *,cs für nur "eine" Sache...

Da spiele ich lieber noch ein wenig "Jugend forscht" und habe danach genau eine *. exe . Ich bin sicher es gibt eine Lösung dafür. Muss sie nur finden. Mithilfe der fleißigen Bienchen hier... face-wink

Trotzdem Danke Q@T0mka
Member: Th0mKa
Th0mKa May 03, 2019 at 09:23:45 (UTC)
Goto Top
Zitat von @mayho33:
Wenn ich mir also vorstelle dass da eine *.ps1, eeine *.psm1 und dann auch noch eine *,cs für nur "eine" Sache...

Hmm, ich meinte zwar C# Code direkt in der ps1 aber man kann das natürlich auch trennen wenn es sinnvoll ist.

/Thomas
Member: mayho33
mayho33 May 03, 2019 at 11:16:25 (UTC)
Goto Top
Zitat von @Th0mKa:

Zitat von @mayho33:
Wenn ich mir also vorstelle dass da eine *.ps1, eeine *.psm1 und dann auch noch eine *,cs für nur "eine" Sache...

Hmm, ich meinte zwar C# Code direkt in der ps1 aber man kann das natürlich auch trennen wenn es sinnvoll ist.

/Thomas

Ach! Ich verstehe erst jetzt! Du meinst den C#-Code in ein object stecken und diesen dann invoken. Ja! Das wäre natürlich ein Möglichkeit 🔑