Fujitsu Deskupdate automatisieren mit baramundi

Alle Treiber auf einem System auf den neusten Stand zu halten ist nicht einfach. Wer hingegen Fujitsu Clients einsetzt, hat es einfach. Das nötige Tool heißt Fujitsu Deskupdate und bietet die Möglichkeit alle benötigten Treiber von Fujitsu herunterzuladen und zu installieren.

Fujitsu Deskupdate

Das Programm selber ist für jeden Fujitsu Client geeignet. Über diesen Download könnt ihr euch das komplette Paket herunterladen. Die aktuell verfügbare Version ist die Fujitsu Deskupdate 4.15.3859 (24.05.2017).

Die unterstützen Betriebssysteme laut Fujitsu sind:

  • Windows 10 (64-bit) Version 1507
  • Windows 10 (64-bit) Version 1511
  • Windows 10 (64-bit) Version 1607 Anniversary Update
  • Windows 7 Home Basic
  • Windows 7 Home Basic x64
  • Windows 7 Home Premium
  • Windows 7 Home Premium x64
  • Windows 7 Professional
  • Windows 7 Professional x64
  • Windows 7 Ultimate
  • Windows 7 Ultimate x64
  • Windows 8.1 Core (64-bit)
  • Windows 8.1 Enterprise (64-bit)
  • Windows 8.1 Pro (64-bit)

Zusätzlich von mir getestet wurden die Windows 10 1709 und 1803 Versionen. Ohne Einschränkung hat das Fujitsu Deskupdate hier funktioniert.

Eine Installation ist nicht notwendig. Das Programm kann entpackt werden und direkt aus dem Ordner gestartet werden.

Fujitsu Deskupdate GUI
Fujitsu Deskupdate GUI

Proxyserver im Einsatz?

Es wird eine direkte Verbindung mit Fujitsu aufgebaut, diese kann auch über einen Proxyserver gehen. Öffnet ihr die config.ini Datei findet ihr einen Abschnitt der so aussieht:

[PROXY]
PROXY_TYPE = 2
PROXY_USERNAME = DOMÄNE\BENUTZERNAME
PROXY_PASSWORD =
PROXY_AUTOCONFIG_URL =
PROXY_SERVER = "IP_oder_FQDN:euer_PORT"

Der hier eingetragene Proxyserver wird beim Aufruf der GUI oder der Kommandozeile genutzt. Ein Auszug aus der Readme verrät auch was es mit dem PROXY_TYPE gemeint ist.

PROXY_TYPE:
0 => Windows Interneteinstellungen verwenden
1 => kein Proxyserver
2 => Proxyserver, PROXY_SERVER muss angegeben werden, PROXY_USERNAME und PROXY_PASSWORD sind optional
4 => Automatisches Konfigurationsscript verwenden, PROXY_AUTOCONFIG_URL muss gesetzt sein, PROXY_USERNAME und PROXY_PASSWORD sind optional
8 => Automatische Erkennung, PROXY_USERNAME und PROXY_PASSWORD sind optional

Wenn PROXY_USERNAME leer ist, wird keine Proxy Autentifizierung verwendet

Um das Kennwort verschlüsselt in der Datei abzulegen, öffnet ihr eine Eingabeaufforderung im Ordner wo auch die ducmd.exe liegt. Und gebt den folgenden Befehl ein:

ducmd.exe /SPPWD euer_Passwort_für_den_Benutzer

Diese Befehl legt das Kennwort verschlüsselt in der Datei ab. Damit ist die Authentifizierung an einem Proxy möglich.

Fujitsu Deskupdate Command Line Tool

Wenn man sich genauer die ducmd.exe ansieht. Wird man feststellen, damit kann man den Vorgang der Suche nach Treibern und des Updates automatisieren. Es existiert eine Readme die uns alle benötigten Informationen liefert.

DUCMD – DESKUPDATE COMMAND LINE TOOL
====================================

DeskUpdate – Performs Update of Drivers, Hotfixes and Applications.

DUCMD [/WEB] <package type> [/ARB] [/AU] [/IBAT]
DUCMD [/WEB] /PACK:<packageIDs> [/ARB] [/AU] [/IBAT]
DUCMD [/WEB] /LIST [/AU] [/IBAT]
DUCMD /SPPWD <password>
DUCMD /? | /E

/APP : Install all more recent applications.
/DRV : Install all drivers.
/WIN : Install all Windows updates.
/LIST : List all more recent packages.
/ARB : Allow reboot after installation.
/PACK : Packages to install.
/? : Show help screen. Alias: /H
/WEB : Get update files from the internet.
/AU : Allow update in case DeskUpdate version is out of date.
/IBAT : Ignore low battery capacity.

Also das ganze kurz an der Eingabeaufforderung ausprobiert und mit dem Ergebnis lässt sich was anfangen.

Deskupdate Command Line
Deskupdate Command Line

Einer Automatisierung steht also nichts im Wege.

Powershell Script zum auswerten

Als erstes benötigen wir ein Script welches uns den Zustand des Clients auswertet. Sind Treiber, Applikationen oder Windows Updates erforderlich. Zusätzlich sollten aber auch die Zustände vom Deskupdate Command Line Tool zurückgemeldet werden. Diese helfen bei der Fehlersuche ungemein.

    ...
    # run command and save the output
    $return = (cmd /c $DUCMD' /WEB /LIST' | findstr "Driver Application Windows")
    
    # if success, next step
    if ($LASTEXITCODE -eq 0) 
    {
        # check for each part
        $return | % {
            if( $_ -match "Driver" )
            {
                # if driver part has not zero updates
		if ($_[0] -ne "0")
                {
                    $RETURN_MESSAGE += $_.Substring(0, $_.Length-1) + ";"
                    $UPDATE_REQUIRED = $true
                }
            }
            elseif($_ -match "Application")
            {
                # if applications part has not zero updates
		if ($_[0] -ne "0")
                {
                    $RETURN_MESSAGE += $_.Substring(0, $_.Length-1) + ";"
                    $UPDATE_REQUIRED = $true
                }
            }
            elseif($_ -match "Windows")
            {
                # if windows updates part has not zero updates
		if ($_[0] -ne "0")
                {
                    $RETURN_MESSAGE += $_.Substring(0, $_.Length-1) + ";"
                    $UPDATE_REQUIRED = $true
                }
            }
        }
	# if any update was found
        if ($UPDATE_REQUIRED) 
        {
            Write-Host $RETURN_MESSAGE
            if($logging)
	    { 
		Stop-Transcript
	    }
	    exit 1
        }
	# if no update was found
        else
        {
            if($logging)
	    { 
		Stop-Transcript
	    }
	    exit 0
        }
    }
    ...

Das komplette Powershell Script findet ihr am Ende des Beitrages zum Download. Hier müsst ihr den Pfad zum ducmd.exe noch anpassen. Meine Ablage ist unterhalb des DIP\Tools\Deskupdate.

Variablen für Assets anlegen

Zur Vorbereitung gehört auch die Anlage der Variablen unterhalb des Assets. Ich habe bei mir die Variable wie folgt angelegt.

Treiber Updates - Variable
Treiber Updates – Variable

Dieses erzeugt dann am Client Asset eine Checkbox. Diese könnt ihr dann zu einer dynamischen Gruppe zu ordnen und für den späteren Task verwenden. Dazu kommen wir noch, erst werden die Variablen gefüllt.

Deploy Script zum Prüfen anlegen

Wir haben jetzt ein Powershell Script welches uns den Client überprüft und zurückmeldet ob ein Update der Treiber notwendig ist. Die Durchführung übernimmt baramundi für uns, dazu müssen wir ihm nur ein Deploy Script erstellen.

Ihr braucht euch nicht die Mühe zu machen das ganze abzuschreiben. Am Ende des Artikels stelle ich euch das Deploy Script kostenlos zur Verfügung.

Abgefragt werden in diesem die einzelnen Rückgabewerte des ducmd.exe und die vom Powershell Script. Sehr einfach gehalten und schnell erstellt.

Fujistu Deskupdate - Deploy Script
Fujistu Deskupdate – Deploy Script

In Zeile 3 führen wir das Powershell Script aus. Dieses wird über eine Batch Datei erzeugt die den folgenden Inhalt hat.

PowerShell.exe -NoProfile -ExecutionPolicy Bypass -Command "& '%~dpn0.ps1'"

Die Batch Datei läuft als LocalSystem hat also Administrator Rechte und kann somit den Parameter -ExecutionPolicy Bypass verwenden. Standardmäßig ist die Executionpolicy bei Powershell auf Restricted eingestellt. In dieser können keine Powershell Dateien (.ps1, .psm1 oder .ps1xml) ausgeführt werden.

Der Parameter -Command “& ‘%~dpn0.ps1′” führ die gleichnamige Datei aus. Die Batch Datei hat den Namen Check-FujitsuUpdates.cmd, somit wird die Powershell Datei mit dem Namen Check-FujitsuUpdates.ps1 ausgeführt.

Die Rückgabewerte aus der Powershell Datei werden an die Variable Return innerhalb des Deploy Scripts übergeben.

In den nachfolgenden Zeilen 4, 6 und 9 werden die Rückgabewerte überprüft und dem entsprechend eine Meldung ausgegeben. In den Zeilen 7 und 10 wird zusätzlich noch über bmacmd.exe die Variablen am Asset verändert. Wird ein Update gefunden, setzt das Kommando in Zeile 7 den Wert auf T(rue).

Sollte kein Update erforderlich sein, wird der Wert in Zeile 10 auf F(alse) gesetzt.

Deploy Script = Task = Software

Mit dem Deploy Script im Gepäck müssen wir nur noch eine Software erstellen. Die wir dann später über einen Job dem Asset zuweisen und darüber die Informationen erhalten.

Hier empfiehlt sich bei der Software Erstellung den Punkt manuelle Integration ohne Wizardunterstützung zu verwenden.

Check-FujitsuUpdates - Software
Check-FujitsuUpdates – Software

Ihr benötigt nur den Punkt Installation – Paralleler Installationsmechanismus. Hier verwenden wir den Punkt baramundi Deploy Script und geben den Pfad zu unserem Deploy Script an. Bei den Eigenschaften müssen wir noch den Haken bei “Nicht als installiert setzen” setzen.

Anschließend die Software noch über einen Job verteilen. Ein Beispiel wie ich das bei mir in der Live Umgebung durchgeführt habe, gebe ich euch in dem folgenden Video.

Updates erforderlich – und jetzt?

Nachdem der Job ausgeführt wurde und die Variablen gefüllt sind. Können wir uns daran machen die Treiber Updates installieren zu lassen. Ein Deploy Script wäre zu aufwendig, wir benötigen nur eine Zeile:

ducmd.exe /WEB /DRV

Dazu legen wir uns wieder eine neue Software an und stellen das folgende ein:

Fujitsu Deskupdate - Treiber installieren
Fujitsu Deskupdate – Treiber installieren

Auch hier wieder drauf achten, das der Haken bei “Nicht als installiert setzen” aktiviert ist. Beide Software lass ich im Benutzerkontext vom LocalSystem laufen.

LocalSystem (Dienst)
LocalSystem (Dienst)

Ausführung beschränken

Die Zuweisung zum Asset übernimmt wieder baramundi für uns. Hier habe ich euch gezeigt wie man Hersteller und Modell in eine dynamische Gruppe zusammenfügen kann. Dieses nutzen wir jetzt um die Zuweisung auf den Hersteller Fujitsu zu zuweisen. Und zwar wie folgt:

Dynamische Gruppe - Hersteller Fujitsu
Dynamische Gruppe – Hersteller Fujitsu

Mit diesen Kriterien wird der Job automatisch dem Client zugewiesen der sich in der Dynamischen Gruppe alle Fujitsu befindet.

Die Ausführung des Jobs passiert im Hintergrund und dauert unter 30 Sekunden. Der Benutzer bekommt davon nichts mit. Zusätzlich könnt ihr diesen Job noch in einem Intervall laufen lassen. So prüft ihr regelmäßig die Clients auf Treiber Updates. Aktuell bei mir eingestellt ist das folgende Intervall:

Fujitsu Deskupdate Checker
Fujitsu Deskupdate Checker

Am Montag, Mittwoch und Freitag jeweils um 10 Uhr, wenn der Client online ist.

Treiber Update durchführen – wann?

Somit haben wir die Client Variablen immer auf den aktuellsten Stand gebracht. Jetzt geht es daran die Treiber Updates auf den Clients durchzuführen. Für meine Umgebung habe ich herausgefunden, dass es am sinnvollsten ist dieses beim Herunterfahren zu erledigen. Einige Software reagiert mit einer Fehlermeldung, wenn die Netzwerkkarte einen neuen Treiber installiert.

Dazu habe ich also folgenden Job angelegt:

Intervall Fujitsu Deskupdate Checker
Intervall Fujitsu Deskupdate Checker

Auch hier wieder ein Intervall damit auch zukünftige Updates automatisch installiert werden. Wir wollen diesen Job aber nur auf Clients ausführen, die auch wirklich ein Treiber Update benötigen. Das können wir erledigen in dem wir baramundi sagen, das der Job eine Voraussetzung erfüllt:

Voraussetzung Treiber Udpate erforderlich
Voraussetzung Treiber Udpate erforderlich

Zusätzlich dazu benötigen wir aber auch wieder eine automatische Zuweisung, die auch hier wieder auf die Dynamische Gruppe – alle Fujitsu geht.

Neben meiner Lösung gibt es bestimmt noch andere Wege das ganze umzusetzen.

Download der Dateien

Wie oben schon erwähnt braucht ihr euch die Arbeit nicht machen und alles abzuschreiben. Hier das gesamte Paket der Dateien von mir.

Download “Fujitsu Deskupdate Automatisierung” FujitsuDeskupdate_Automatisierung.zip – 1419-mal heruntergeladen – 2,22 kB

Fujitsu Deskupdate Download

3 comments

  1. Tobias Reply

    Mal eine Frage. In deinem Skript prüfst du ja auch auf Windows Updates und Application Updates.
    Das BMA Skript setzt aber unabhängig davon welche Kategorie es ist die Update Variable im Baramundi wenn ein Update gefunden wurde. Dein Task Skript aktualisiert jedoch nur Treiber.

    Somit würde die Variable ja immer auf Wahr gesetzt, selbst wenn nur Apps oder Windows Updates vorhanden sind. Oder hast du für die Apps einen eigenen Job?

    Windows Updates dürften ja eher selten vorkommen da das vermutlich bei euch auch über Baramundi oder WSUS läuft.

    • Sebastian Post authorReply

      Hallo Tobias,

      das ist richtig. In der aktuellen Umsetzung ist es noch so, das ich damit erst mal nur die Treiber aktualisiere. Bisher habe ich den Fall noch nicht gehabt das auch eine Anwendung über das Tool geupdatet wurde. Aber in dem Fall würde er in einer Endlosschleife hängen.

      Dieses werde ich noch nachpflegen und aktualisieren.

      Vielen Dank für das Feedback.
      Sebastian

  2. Pingback: Fujitsu DeskUpdate Version 5 - Automatisieren mit baramundi • it-runs.de

Kommentar verfassen