mayho33
Goto Top

Powershell: Von SCCM-TaskSquences auslesen welche App gerade installiert wird

Hallo @ All

In diesem Beitrag hat mit @t0mka bereits bestens auf die Sprünge geholfen. Leider stehe ich schon wieder an bzw. finde keine Lösung und hoffe nochmal, dass mir hier aus den Forum helfen kann.

Mein Problem ist folgendes:

In einer TS sind mehrere Apps verknüpft. Nun will ich "am Client" auslesen welche App denn gerade dran ist und das in einer GUI (siehe auch obigen Artikel) anzeigen. Ich weiß zwar, dass man das TS-Window anzeigen lassen kann, das will aber mein Vorgesetzte und der Kunde nicht. Eine Art Log mit Anzeige was gerade passiert soll in der GUI angezeigt werden.

Soweit habe ich mich zwar schon schlau gemacht, dass sich das TS-Objekt zur Laufzeit auslesen lässt...
 New-Object -COMObject Microsoft.SMS.TSEnvironment 

...es scheint aber keine Entsprechung bei den verfügbaren Variablen zu geben:
https://docs.microsoft.com/en-us/sccm/osd/understand/task-sequence-varia ...

Hat jemand eine Tipp wie ich das am besten umsetzen kann?

Vielen Dank!

Mayho

Content-ID: 443510

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

Ausgedruckt am: 04.12.2024 um 08:12 Uhr

certifiedit.net
certifiedit.net 22.04.2019 um 19:01:19 Uhr
Goto Top
In einer TS sind mehrere Apps verknüpft. Nun will ich "am Client" auslesen welche App denn gerade dran ist und das in einer GUI (siehe auch obigen Artikel) anzeigen. Ich weiß zwar, dass man das TS-Window anzeigen lassen kann, das will aber mein Vorgesetzte und der Kunde nicht. Eine Art Log mit Anzeige was gerade passiert soll in der GUI angezeigt werden.


Sicher, dass dein Problem technisch zu lösen ist?
139374
Lösung 139374 22.04.2019 aktualisiert um 19:09:51 Uhr
Goto Top
Aus den Logs auslesen wäre eine Variante.
https://deploymentparts.wordpress.com/2015/08/14/how-to-track-an-install ...

Besser wäre es wenn der User überhaupt nichts von irgendwelchen Installationen mitbekommt und das das ganze schon vor der Anmeldung vernünftig eingerichtet wird. Der User soll mit den Apps arbeiten und nicht ihnen bei der Installation zusehen face-wink.
mayho33
mayho33 22.04.2019 um 19:10:52 Uhr
Goto Top
Lösbar ist alles...irgendwie. Es stellt sich halt die Frage wie und ob es eine saubere Lösung ist?

Wie im verknüpften Artikel ersichtlich, hatten wir vorher Application getriggert, was auch gut funktioniert hat, weil's dem Kunden aber per TS "verkauft" wurde, will er es nun auch so umgesetzt...

Den Techniker der es umsetzen soll/muss fragt ja niemand bzw. erst, wenn schon alles in Stein gemeißelt ist und er (der Techniker => ich) seine Einwände nun genauso gut mit der Wand besprechen könnte.
certifiedit.net
certifiedit.net 22.04.2019 um 19:12:54 Uhr
Goto Top
Das mein ich. Aufwand zu Ergebnis. ;)
mayho33
mayho33 22.04.2019 aktualisiert um 19:37:57 Uhr
Goto Top
Zitat von @139374:

Aus den Logs auslesen wäre eine Variante.
https://deploymentparts.wordpress.com/2015/08/14/how-to-track-an-install ...

Logs auslesen ist natürlich eine Option, per TS scheint das Log (AppDiscovery.log) aber sehr verzögert bzw. nicht vollständig geschrieben zu werden. Die Formatierung ist auch so eine Sache.
Dann gäbe es da noch Download usw. zu überbrücken bzw. festzustellen ob und wann das passiert (ContentTransferManager.log). Du hast keine Ahnung welchen Irrwitz ich umsetzen muss.

Eine TS-Variable wäre da schon eine angenehme Sache. Habe es auch mit RegistryKeys schreiben zwischen den einzelnen Sequences und monitoren des entsprechenden versucht...

Bsp.:
cmd.exe /c reg add HKEY_LOCAL_MACHINE\SOFTWARE\_TS_BASED_KEYS /v CurrentValue /t REG_SZ /d "Installiere Java Runtime x86" /f

Die Sequence wird aber nicht fertig! Bleibt ewig hängen bis sie irgendwann abbricht... Vielleicht mache ich da ja was falsch?

Besser wäre es wenn der User überhaupt nichts von irgendwelchen Installationen mitbekommt und das das ganze schon vor der Anmeldung
vernünftig eingerichtet wird. Der User soll mit den Apps arbeiten und nicht ihnen bei der Installation zusehen face-wink.

Alle Applications sind nur available, nicht required. Ausßerdem gibt es genau wegen des "vernünftigen Ansatzes" mehrere Patch-Days im Monat. Das schwache Glied in der Kette sind da leider die User.

Die Vorgabe ist auch eine andere. Natürlich gibt es bessere Ansätze/Lösungen und Ja! Der User soll am Ende mit der App arbeiten. Vorher muss aber sichergestellt sein, dass er mit der richtigen Version arbeitet, da es sich um Finanz-Anwendungen handelt.

Wie im verknüpften Thread schon gesagt: Ich habe leider bestimmte Rahmenbedingungen umzusetzen.

Zitat von @certifiedit.net:

Das mein ich. Aufwand zu Ergebnis. ;)

Haha! Das predige ich sein Monaten. No Chance! Kosten, Reproduzierbarkeit und Umsetzbarkeit spielen ganz offensichtlich keine Rolle
Th0mKa
Th0mKa 23.04.2019 um 12:48:57 Uhr
Goto Top
Zitat von @mayho33:
Bsp.:
cmd.exe /c reg add HKEY_LOCAL_MACHINE\SOFTWARE\_TS_BASED_KEYS /v CurrentValue /t REG_SZ /d "Installiere Java Runtime x86" /f

Moin,

Ist das ein Java Programm? Wenn ja solltet ihr die nötige Java Version vielleicht als "Self contained Application Package" mit dem Programm ausliefern und selbiges per JNLP updaten. Das dürfte deutlich zuverlässiger sein.

/Thomas
mayho33
mayho33 24.04.2019 um 09:53:43 Uhr
Goto Top
Zitat von @Th0mKa:

Moin,

Ist das ein Java Programm? Wenn ja solltet ihr die nötige Java Version vielleicht als "Self contained Application Package" mit dem Programm ausliefern und selbiges per JNLP updaten. Das dürfte deutlich zuverlässiger sein.

/Thomas

Nein ist es nicht. Das ist nur ein Beispiel. Java ist zwar Teil der TS aber die Version ist nicht essentiell. Alles Applications sind available. Das hat firmenpolitische Gründe. Und wir bringen Java natürlich auch als eigene Application aus mit Deadline aus.

UPDATE:
Die Situation hat sich jetzt auch wieder geändert. Nachdem ich die TS gelöscht und neu angelegt habe, funktioniert auch das Setzen der Registry-Keys (fu... y.. MS! Langsam reichts!!) Irgendwo in den Tiefen der SQL-DB ist wohl wider mal was schief gegangen beim Anlegen von weiß der Geier...

Ich kann nun den aktuellen Step aus der Registry auslesen und anzeigen.

Leider trotzdem suboptimal. Die Toast-Notifications und das Fensterchen der TS wissen ja auch was gerade Sache ist. Zum Mäusemelken! Wo kommen diese Infos her??
139374
Lösung 139374 24.04.2019 aktualisiert um 10:54:48 Uhr
Goto Top
Einerseits kennt tsmanager.exe und smsswd.exe den aktuellen Status und meldet das dem OS andererseits schau dir mal die diversen WMI Klassen dazu an
https://docs.microsoft.com/en-us/sccm/develop/reference/core/clients/sdk ...
Da lassen sich sicher die passenden Events registrieren.
mayho33
mayho33 24.04.2019 um 21:06:55 Uhr
Goto Top
Danke @139374

Ist mir dann doch zu aufwendig. Man müsste mehrere Classes in sehr kurzen Abständen analysieren... Zudem ist es dann notwendig die ScopeID / Application_ID mitzugeben, will man nicht dutzende Instanzen durchackern. Zu statisch. Da bleibe ich dann doch lieber beim Schreiben und Abgreifen von Reg-Keys zwischen den einzelnen Sequenzendirekt in der TS. So ist dann auch Superseedence möglich ohne das Script ständig aktualisieren zu müssen.

Die PackageID der TS reicht aus um auf das Ende des Durchlaufs der TS warten zu können; Über "ROOT\ccm\ClientSDK:CCM_Program\<Instance by PackageID>\EvaluationState"

Danke an alle für die Unterstützung und Tipps!

Grüße!

Mayho