Show me the where, the why, the what

Immer wieder passiert es selbst dem allerbesten Administrator den Registry Key auf dem falschen seiner dutzend offenen RDP Sitzungen zu setzen oder den Server A statt Server B neu zu starten. Oft ist es aber auch nur die Anforderung, schnell alle wichtigen Sitzungsinformationen auf einem Blick zur Verfügung zu haben.

Eine leichte Möglichkeit, immer im Blick zu haben ist, alle wichtigen Informationen im Desktop einzublenden und somit nutze ich seit Jahren (wie sicher viele andere) zu diesem Zweck BGInfo. Aber einfach nur Informationen anzeigen reicht einfach nicht. Dazu kommen noch folgende Anforderungen:

  • Die Anzeige soll möglichst bei jedem Login refreshed werden.
  • Single-Point-of-Administration. ich möchte vermeiden Startup-Anwendungen in vielen unterschiedlichen Systemen zu verwalten.
  • Änderungen an der Config File und am Hintergrundbild sollen schnell und zentral verbreitet werden können.
  • Kritische Systeme sollen klar und deutlich von nicht-kritischen Systemen unterschieden werden können, idealerweise mit deutlich unterscheidbaren Hintergrundbildern.
  • Die Anzeige/Hintergrundbilder sollen Mandantenfähig oder sogar für unterschiedliche Team entsprechend anpassbar sein.
  • Die Login-Dauer soll nicht davon beeinträchtigt werden.

Als Administrator einer SCCM Umgebung liegt natürlich der Gedanke nah, alle diese Anforderungen mit SCCM zu erschlagen. Folgend ist in 4 Schritten das Vorgehen detailliert erläutert.

  1. Hintergrundbilder
    Als erstes steht die Gestaltung verschiedener Hintergrundbilder für Server, Terminal Server, Desktops, VDIs, Teams, Abteilungen, je nach Bedarf an. Mein Tip ist hier die Google Bildersuchen mit abstrakten Suchbegriffen (z.B. Smoke, Abstract, Fire, Mist, o.ä.) zu verwenden und die Ergebnisse mit den Einstellungen „Groß“ und „Zur Wiederverwendung und Veränderung gekennzeichnet“ zu filtern. Ich empfehle ein Bild auszusuchen, welches an der Stelle, an der später Informationen angezeigt werden sollen auch wenig Inhalt besteht.
    Im Anschluss wird das Firmenlogo und sonstige gewünschte Änderungen in einem guten Bildbearbeitungsprogramm als eigene Ebene eingebaut und die Basis Ebene für jeden Einsatzzweck unterschiedlich coloriert. In meinem Fall wollte ich Server und Desktop sowie normale als auch administrative User unterscheiden und habe im Ergebnis 4 Bilder angefertigt. Wichtig ist, dass die Bilder im JPG Format abgespeichert werden, da wir BGInfo in Folge verwenden werden um je nach Szenario das korrekte Bild anzuziehen.

    Diese Diashow benötigt JavaScript.

     

  2. BGInfo Konfiguration
    Im nächsten Schritt wird BGInfo gestartet und die Informationen konfiguriert, die angezeigt werden sollen.

    2017-05-02 15_40_42-Pluto QA - S2 - Admin - Royal TS

    Mit dem Button „Background“ wird das Hintergrundbild angegeben, dass verwendet werden soll. Ich nutze hier einen Pfad auf der lokalen Maschine. Mit einem Paket wird über SCCM später sichergestellt, dass an dieser Stelle auch die notwendigen Dateien liegen.

    Unter „Bitmap -> Location“ wird angegeben, dass das „Users temporary directory“ verwendet werden soll, um das Bild abzuspeichern. Mit „Preview“ kann die Ansicht dann getestet werden.
    Nun wird die Konfiguration unter einem sprechenden Namen gespeichert und nach und nach für jeden oben genannten Einsatzzweck eine Konfigurationsdatei erstellt.

  3. Package erstellen
    Um die Bilder zu verteilen wird das Powershell Appdeployment Toolkit (PSADK) verwendet. Das ganze Paket kann hier heruntergeladen werden.
    Um die Bilddateien auf die Zielsysteme zu verteilen, wird zuerst der Zielordner angelegt und die benötigten Dateien kopiert.

    New-Folder -Path "$envProgramFilesX86\BGInfo"
    Copy-File -Path "$dirFiles\*.jpg" -Destination "$envProgramFilesX86\BGInfo"
    Copy-File -Path "$dirFiles\bginfo.exe" -Destination "$envProgramFilesX86\BGInfo"
    Copy-File -Path "$dirFiles\*.bgi" -Destination "$envProgramFilesX86\BGInfo"

    Im Anschluß wird der Parameter zum Aufruf von BGInfo korrekt zusammengebaut. In meinem Fall ist die Unterscheidung zwischen Admin und User sowie Server und Desktop wichtig.

    if($IsServerOS -or $IsDomainControllerOS) {
       if($IsAdmin) {
          $param = """$envProgramFilesX86\BGInfo\Server_Admin.bgi"" /TIMER:0 /SILENT /NOLICPROMPT"
       } else {
          $param = """$envProgramFilesX86\BGInfo\Server.bgi"" /TIMER:0 /SILENT /NOLICPROMPT"
       }
    } else {
       if($IsAdmin) {
          $param = """$envProgramFilesX86\BGInfo\Desktop_Admin.bgi"" /TIMER:0 /SILENT /NOLICPROMPT"
       } else {
          $param = """$envProgramFilesX86\BGInfo\Desktop.bgi"" /TIMER:0 /SILENT /NOLICPROMPT"
       }
    }

    Im letzten Schritt wird BGInfo direkt aus dem PSADK Paket mit den zuvor zusammengestellten Parametern aufgerufen.

    Start-Process -FilePath "$envProgramFilesX86\BGInfo\BGInfo.exe" -ArgumentList $param -WindowStyle Hidden
  4. Aufruf beim Login
    Im ersten Schritt wird ein Package (Ein Package deshalb, da im Falle einer Application die Detection Methode beachtet werden müsste) erstellt, welches die Deploy-Application.exe nicht sichtbar (Run = Hidden) aufruft.

    2017-05-03 10_41_39-S2 - Admin

    Im Tab „Environment“ des „Programs“ wird konfiguriert, dass dieses nur laufen darf, wenn ein User angemeldet ist und dass das „Program“ im Sicherheitskontext des Benutzers ausgeführt wird.

    2017-05-03 10_43_03-S2 - Admin

    Zudem wird im Package eingestellt, dass dieses im Client-Cache persistent bleibt. 
    2017-05-03 10_37_19-S2 - Admin
    Da BGInfo direkt aus dem PSADK Paket heraus aufgerufen wird, muss die Ausführung bei jedem Logon geschehen. Es wird in SCCM eine User-Collection angelegt die alle User umfasst, die das Hintergrundbild empfangen sollen. Dann wird ein Deployment geschrieben.
    Die „Action“ ist „Install“, der „Purpose“ steht auf Required.
    2017-05-03 10_32_16-S2 - Admin

    Der entscheidende Punkt ist, dass ein Assignment Schedule für den „Log on“ eingetragen ist und das „Rerun behavior“ auf „Always rerun program“ steht. Ich habe in meiner Umgebung über einen weiteren daily schedule noch sichergestellt, dass mindestens einmal täglich der Hintergrund refreshed wird.
    2017-05-03 10_34_33-S2 - Admin

Mit dieser Lösung sind soweit alle oben angegebenen Anforderungen erfüllt. Das Hintergrundbild aller Geräte unterliegt einem zentralen Management, die Lösung kann über das PSADK Script beliebig erweitert werden, der Login ist über die asynchronen Ausführung via SCCM nicht behindert. Ich wünsche viel Spaß beim Nachbau.

Advertisements

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s