Fujitsu DeskUpdate Version 5 – Automatisieren mit baramundi

Durch einen Kommentar von Christoph in meinem YouTube Video wurde ich aufmerksam auf neue Update des Fujitsu Deskupdate Tools. Die Entwickler haben das Tool auf die Version 5.0.8 gebracht.

Wer noch die Version 4.x einsetzt, der findet in diesem Artikel alles was er benötigt um Fujitsu Deskupdate zum laufen zu bringen. Der angebotene Download funktioniert noch, so könnt ihr die ältere Datei noch verwenden. Diese wird aber nur noch von den älteren Modellen unterstützt. Eine detaillierte Auflistung der Modelle liegt mir leider nicht vor.

Was ist Fujitsu Deskupdate?

Fujitsu Deskupdate sorgt an eurem Fujitsu Computer, das kann ein Desktop oder Laptop sein, das die von Fujitsu verwalteten Treiber auf den neusten Stand sind. Hierzu zählen die Treiber von Chipsatz, Grafikkarte, Netzwerkkarte, RAID-Treiber, etc. und die von Fujitsu ausgelieferte Software. Unter bestimmten Umständen können auch Windows Updates installiert werden, dieses ist mir bisher aber noch nicht untergekommen.

Fujitsu DeskUpdate Version 5
Fujitsu DeskUpdate Version 5

Neben der normalen GUI Variante wird auch eine Kommandozeilen Variante angeboten. Das Programm muss nicht installiert werden, so ist es ebenfalls möglich das Programm von einem Netzlaufwerk zu starten. Eine Dokumentation sucht man vergeblich, auch über die Fujitsu Homepage wird man nicht fündig.

Der Weg zur Automatisierung mit baramundi

Ohne Dokumentation gibt es also nur “try-and-error”. Ich konnte aber einiges aus dem vorherigen Projekt entnehmen. So waren schon teile des Powershell-Skripts fertig, welches ich nur noch um einige Rückmeldungen angepasst habe. Aber dazu kommen wir weiter unten im Artikel.

Schritt 1: Dateien anschauen

Als erstes habe ich mir das eigentliche Verzeichnis vorgenommen, was liefert uns Fujitsu hier alles für neue Funktionen.

Fujitsu Deskupdate Version 5 - Dateien
Fujitsu Deskupdate Version 5 – Dateien

Die ersten Dateien die man findet sind alle mit Caliburn.Micro gekennzeichnet. Caliburn.Micro ist ein Framework welches genutzt wird um Anwendungen im XAML Format zu erstellen. Wer noch mehr Informationen dazu haben möchte, hier gibt es noch mehr Lesestoff.

DeskUpdate.exe, startet das klassische DeskUpdate Programm. Mir sind keine Parameter bekannt die man beim Auruf verwenden kann um hier noch einen weiteren nutzen herauszuziehen. Interessant für denjenigen der das ganze Manuell an einer Workstation durchführen möchte. Nach dem Suchen werdet ihr feststellen, das er nur den Hinweis liefert – x Updates gefunden. Unten links gibt es die Erweiterte Ansicht in der Ihr auch alle Programmpakete findet.

Ducmd.exe, kein Logo 🙂 das sieht vielversprechend aus. Genau das haben wir gesucht, wenn wir das ganze aus einer Kommandozeile aufrufen erhalten wir schon mal ein paar Informationen aus dem System. Aber das ganze muss als Administrator ausgeführt werden.

DuCore.config.json, ist eine JSON Datei für die Steuerung der Updates. Hier kann z.B. der Systemwiederherstellungs-punkt ausgeschaltet werden. Dieser wird automatisch erzeugt wenn Treiber, Programme oder Updates eingespielt werden. Hier befindet sich auch die Proxy-Einstellung. Dazu kommen wir im nächsten Schritt.

Log4net.xml, genau das was der Name schon sagt, eine Logging Komponente. Viel mehr eine Bibliothek von Apache – hier gibt es noch mehr Informationen. Mir fehlte leider die Zeit das genauer zu prüfen. Wenn man sich diese Datei anschaut, wird einen aber schnell klar. Damit kann das Logging zentralisiert werden. Innerhalb dieser Datei findet man alle Informationen um die Datenbank zu erstellen.

An example of a SQL Server table that could be logged to:
</code>
	CREATE TABLE [dbo].[Log] ( 
	  [ID] [int] IDENTITY (1, 1) NOT NULL ,
	  [Date] [datetime] NOT NULL ,
	  [Thread] [varchar] (255) NOT NULL ,
	  [Level] [varchar] (20) NOT NULL ,
	  [Logger] [varchar] (255) NOT NULL ,
	  [Message] [varchar] (4000) NOT NULL 
	) ON [PRIMARY]
</code>

Zusätzlich dazu haben die Entwickler auch einen Eintrag hinterlassen, wie das Logging aktiviert werden kann.

An example configuration to log to the above table:
<code lang="XML" escaped="true">
            <appender name="AdoNetAppender_SqlServer" type="log4net.Appender.AdoNetAppender">
  <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
  <connectionString value="data source=SQLSVR;initial catalog=test_log4net;integrated security=false;persist security info=True;User ID=sa;Password=sa"/>
  <commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message]) VALUES (@log_date, @thread, @log_level, @logger, @message)"/>
  <parameter>
	<parameterName value="@log_date"/>
	<dbType value="DateTime"/>
	<layout type="log4net.Layout.PatternLayout" value="%date{yyyy'-'MM'-'dd HH':'mm':'ss'.'fff}"/>
  </parameter>
  <parameter>
	<parameterName value="@thread"/>
	<dbType value="String"/>
	<size value="255"/>
	<layout type="log4net.Layout.PatternLayout" value="%thread"/>
  </parameter>
  <parameter>
	<parameterName value="@log_level"/>
	<dbType value="String"/>
	<size value="50"/>
	<layout type="log4net.Layout.PatternLayout" value="%level"/>
  </parameter>
  <parameter>
	<parameterName value="@logger"/>
	<dbType value="String"/>
	<size value="255"/>
	<layout type="log4net.Layout.PatternLayout" value="%logger"/>
  </parameter>
  <parameter>
	<parameterName value="@message"/>
	<dbType value="String"/>
	<size value="4000"/>
	<layout type="log4net.Layout.PatternLayout" value="%message"/>
  </parameter>
</appender>
</code>

Das ganze ist sehr vorbildlich, so sollte man dokumentieren.

Etwas versteckt ist noch ein Hardwarescanner der uns eine XML oder JSON Datei erzeugt, mit allen Informationen auf dem System. Unter pingcore\win7-x64\tools\ findet man die Datei HardwareScanner.exe. Ruft man diese mit den Parametern “XML machine.xml” wird im gleichen Verzeichnis eine XML Datei erstellt. Diese nutzt Fujitsu bestimmt dazu um die Informationen aus dem System zu lesen und zu prüfen welche Hardware verbaut ist.

Schritt 2: Ducmd auseinander nehmen

Über Ducmd wird also Fujitsu Deskupdate aus der Kommandozeile gestartet und installiert darüber auch anschließend die Updates. Über Ducmd.exe /? wird die Hilfe aufgerufen die eine kleine Unterstützung ist.

Fujitsu Deskupdate - Ducmd - Hilfe
Fujitsu Deskupdate – Ducmd – Hilfe

Also geht es weiter mit den Aufschlüsseln der Kommandos die wir benötigen.

  • /WEB – Verbindung mit dem Internet
  • /ARB – Neustarten nach Abschluss, wenn erforderlich
  • /LIST – Pakete auflisten welche installiert/geupdatet werden können
  • /SPPWD – Passwort für den Proxy setzen, wenn erforderlich
  • /E – alle Errorcodes abfragen

Schritt 3: Ducmd /WEB /LIST

Damit sollten wir also die Informationen erhalten, welche Updates heruntergeladen werden und installiert werden müssen. Eine einfache Ausgabe könnte so zum Beispiel aussehen.

ducmd 5.00.8.0
Copyright (c) 2017 Fujitsu Technology Solutions
DeskUpdate command line application

Computer Product Identification:
Product . . . . : ESPRIMO_P556
Board . . . . . : D3400-A1
Operating system: W10 (AMD64)
Marketing name  : ESPRIMO_P556

Installable packages:
     [ID] 4051 - Realtek PCI-E NIC Family all in one NDIS Driver for Windows 10,  [version] 10.026.0328.2018
     [ID] 4203 - Intel® HD Graphics (KabyLake),  [version] 100.6136 - 24.20.100.6136 - PV - 64bit
     [ID] 3841 - Intel AHCI 16.0.2.1086 PV,  [version] 16.0.2.1086 - PV
     [ID] 4127 - FUJ02E3 Device Driver 4.0.2.6 (DCU),  [version] 4.0.2.6
     [ID] 4237 - Workplace PowerSettings 2.20.0039 (64),  [version] 2.20.0039

Die Updates können nur gesucht werden, wenn auch eine Internetverbindung besteht. Sollten eure Clients eine direkte Internetverbindung haben, müsst ihr jetzt nichts weiter einstellen. Meistens ist aber ein Proxy-Server dazwischen. Die Einstellung könnt ihr in der DuCore.config.json vornehmen, dazu müsst ihr nur die folgenden Variablen ändern.

"Proxy": {
        "ProxyType" : 1,
        "_Comment_ProxyType0" : "0 = ProxyNone",
        "_Comment_ProxyType1" : "1 = ProxyAuto (default)",
        "_Comment_ProxyType2" : "2 = ProxyExplicit (uses ProxyUsername, ProxyPassword, ProxyServer)",
        "_Comment_ProxyType3" : "3 = ProxyAutoConfigUrl (uses ProxyAutoconfigUrl)",
        "_Comment_ProxyType4" : "4 = ProxyDefault",
        "_Comment_ProxyType5" : "5 = ProxyDefaultIe",
        "ProxyUsername" : "proxy1",
        "ProxyPassword" : "proxy2",
        "ProxyAutoconfigUrl" : "",
        "ProxyServer" : "192.168.168.207:808"
    },

Der ProxyType ist dabei entscheidend, ihr müsst also nur noch den für euch entsprechenden Type einstellen. Wird ein Kennwort für die Authentifizierung genutzt, so kann dieses über den Befehl:

Ducmd /SPPWD euer Kennwort

Schritt 4: Ducmd /INSTALL /WEB

Leider ist die Dokumentation von Fujitsu hier etwas unvollständig und fehlerhaft. Das Kommando Ducmd /INSTALL /WEB /DRV liefert einen Fehler “Fehlerhafte Kommandozeile“.

Wird das Programm aber richtig aufgerufen und es sind Update vorhanden, dann erscheint die folgende Meldung:

ducmd 5.00.8.0
Copyright (c) 2017 Fujitsu Technology Solutions
DeskUpdate command line application

Computer Product Identification:
Product . . . . : ESPRIMO P420
Board . . . . . : D3230-A1
Operating system: W7 (AMD64)
Marketing name  : ESPRIMO P420

Creating a system restore point
Package 0/6 downloaded
Package 1/6 downloaded
Package 2/6 downloaded
Package 3/6 downloaded
Package 4/6 downloaded
Package 5/6 downloaded
Package 6/6 downloaded
Package 1/6 installed
Package 2/6 installed
Package 3/6 installed
Package 4/6 installed
Package 5/6 installed
Installation finished

DeskUpdate requires a reboot to activate changes!!!

Damit sind alle Schritte klar und es muss nur noch in die baramundi Mangement Suite integriert werden.

Schritt 5: Powershell Scripte zum auswerten

Um das ganze etwas zu vereinfachen, habe ich zwei Powershell Scripte erstellt. Diese werden genutzt um die Programmaufrufe auszuwerten und an baramundi zurückzumelden. Die Beschreibung der Powershell Scripte würde den Rahmen hier sprengen, die Scripte sind von mir gut dokumentiert und selbst erklärend.

Schritt 6: baramundi Deploy Script – Update Check

Es werden zwei Deploy Scripte verwendet, eins um mittels Fujitsu Deskupdate einen Update Check durchzuführen. Und eins für den eigentlichen Update-Prozess.

In beiden baramundi Deploy Scripts sind die Variablen DeskUpdate und PowershellScript anzupassen.

baramundi Deploy Script - Variablen
baramundi Deploy Script – Variablen

Die Voraussetzung für die Powershell Scripte sind eine Version von 4.0 oder höher. Die aktuellste Powershell Version könnt ihr hier herunterladen.

Schritt 7: Variablen erstellen

Für die baramundi Deploy Scripte werden Variablen benutzt die noch angelegt werden müssen. Dieses geht über Konfiguration – Variablen. Hier legt ihr eine Client Variable mit dem Namen Updates an und als Typ wählt ihr Ein/Aus-Feld. Als Standardwert sollte Aus eingegeben.

baramundi Management Center - Variablen
baramundi Management Center – Variablen

Integration in die baramundi Management Suite

Um die Integration so einfach wie Möglich zu gestalten, habe ich euch ein bdx-Container erstellt. Diesen könnt ihr einfach importieren und auf eure Wünsche anpassen. Er enthält alle bds-Dateien, Powershell-Scripte und eine Fujitsu Deskupdate Installation.

Download “bdx - Fujistu DeskUpdate V5”

Fujitsu DeskUpdate V5 1.4.zip – 2519-mal heruntergeladen – 52,44 MB

 

Update der Powershell Scripte und der bdx-Datei

Hier ist eine aktualisierte Version verfügbar.

25 comments

  1. Pingback: Ducmd - Fujitsu DeskUpdate Powershell Skripte • it-runs.de

  2. Jens Hartwig Reply

    Hallo IT-runs Team,

    ich habe den BDX Container importiert und soweit alles angepasst, was noch nötig war.
    Leider erhalte ich im Debug Modus einen Fehler, welchen ich nicht einordnen kann. Hier ein Ausschnitt aus der Ausgabe:

    Zeile 24: Führe Schritt [Externen Prozess [C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy ByPass -File “\\bara010045.agemis.de\dip$\Scripts\ITruns\FujitsuDeskupdate-CheckerV5.ps1” -DeskUpdate “\\bara010045.agemis.de\dip$\Tools\DeskUpdate_v5\Ducmd.exe”] starten] aus
    Zeile 27: Überspringe Schritt [Bedingungsgruppe], da die Bedingung [7 = 1] nicht zutrifft
    Zeile 29: Überspringe Schritt [Bedingungsgruppe], da die Bedingung [7 = 3] nicht zutrifft
    Zeile 31: Überspringe Schritt [Bedingungsgruppe], da die Bedingung [7 = 4] nicht zutrifft
    Zeile 33: Überspringe Schritt [Bedingungsgruppe], da die Bedingung [7 = 5] nicht zutrifft
    Zeile 35: Überspringe Schritt [Bedingungsgruppe], da die Bedingung [7 = 6] nicht zutrifft
    Zeile 37: Führe Schritt [Bedingungsgruppe] aus, da die Bedingung [7 = 7] zutrifft
    Zeile 38: Führe Schritt [Skript beenden mit Fehler und Meldung [DeskUpdate – General error.]] aus

    Habt Ihr einen Tipp für mich?

    Viele Grüße

    Jens

    • Sebastian Post authorReply

      Hallo Jens,

      Ich schaue heute Abend Mal was ich dazu finden kann. Das sieht auf den ersten Blick so aus das Ducmd läuft, aber etwas nicht klappt. Also kannst du baramundi und Powershell ausschließen. Wir finden den Fehler ?

      Gruss
      Sebastian

  3. Jens Hartwig Reply

    Hallo Sebastian,

    super, vielen Dank für deine Rückmeldung und noch mal großes Lob für den tollen Beitrag.
    Da wir ausschließlich Fujitsu Clienthardware haben, würde ich mich freuen wenn wir das zum laufen bekommen.

  4. Pingback: baramundi Fujitsu DeskUpdate Version 5 Update • it-runs.de

  5. Flori Reply

    Erhalte schon bei dem Befehl ducmd.exe /list die Meldung “Envirnoment check failed”

  6. Flori Reply

    Jetzt bringt er

    ERR: Can’t get the checked list of packages

    ERR: Status: Error, ErrorCode: 645, ErrorReason: No index file duindex.json found

  7. Flori Reply

    ok hat sich erledigt. Wenn /web nicht genutzt wird kommt die Meldung 🙂

    • Sebastian Post authorReply

      Hallo Flori,

      genau richtig erkannt. Wenn du das /WEB nicht hinzufügst dann wird das nichts. Ich habe auch noch nicht herausgefunden welchen Eintrag er dann nimmt.

      Gruß
      Sebastian

  8. Roy Reply

    Hallo Sebastian,

    ähnlich meinen Vorredner hat das Importieren des BDX Containers alles wunderbar funktioniert. Auch das Ausführen des Checks lief sauber durch.

    Wenn ich allerdings das eigentliche Update mittels Job durchführen will erhalte auch auf den Systemen die Meldung:
    “Finished with error at 29.08.2018 10:22:53: Die Installation von [ITruns Fujitsu Deskupdate Update V5] schlug fehl: Skript benutzerdefiniert beendet: DeskUpdate – Syntax error in command line.”

    Hast Du evtl einen Tip für mich?

    • Sebastian Post authorReply

      Hallo Roy,

      vielen Dank für den Kommentar.

      Nutzt du die aktualisierte Version meines Powershell Scriptes. Wenn ja, dann kannst du ein LOG-File aktivieren, welches dir auch die Ausgabe der Kommandozeile mit protokolliert. DeskUpdate Update

      Das ist leider ein Allgemeiner Fehler, daher würde ich mir das Logfile anschauen wollen.

      Gruß
      Sebastian

    • Sebastian Post authorReply

      Hallo Roy,

      ich habe heute einen sehr “dummen” Fehler baramundi Deploy Script gefunden. Heute kommt eine aktualisierte Version des Scriptes heraus. Damit ist auch dieser Fehler behoben.

      Gruß
      Sebastian

  9. Sebastian Post authorReply

    Hallo zusammen,

    ich muss gerade feststellen, das ich den selben Fehler bei mir auf dem Testsystem erhalte. Ich bin am suchen wo der herkommt und berichte.

    Vielen Dank für das Feedback.

    Gruß
    Sebastian

  10. Flori Reply

    Jetzt hab ich das Problem, dass er soweit alles sauber installiert, bis auf das “EM7305” Sierra Modul. Er erkennt es leider auch nicht als fehlend an :-/

  11. Flori Reply

    Okay 😀 Hat sich wieder erledigt wenn ich (die ID 1218) zuerst installieren lasse, klappt es.

    ducmd.exe /install /pack:1218,4015,1122,3692,1710,1218 /arb /web

    • Sebastian Post authorReply

      Hallo Flori,

      da gab es wohl eine Abhängigkeit. Ich muss teilweise auch die Installationen zweimal durchlaufen lassen, wenn mehrere IDs zum Update bereit stehen.

      Gruß
      Sebastian

  12. Pingback: Fujitsu DeskUpdate 5.0.0045 Update - baramundi steht aus • it-runs.de

  13. Kai Reply

    Hallo, ich habe folgendes Problem und sehe wahrscheinlich den Wald vor lauter Bäumen nicht.
    Als Fehler erhalte ich:”Die Installation von [ITruns Fujitsu Deskupdate Checker V5] schlug fehl: Skript benutzerdefiniert beendet: Baramundi – Powershell version 4.0 or later required”
    Ich habe Baramundi auf einem Server 2016 laufen, da ist das Windows Management Framework 5.1 schon inbegriffen. Daher kann ich den Fehler nicht einordnen???

    • Sebastian Post authorReply

      Hallo Kai,

      ich habe das ganze gerade bei mir auf einem 2016 getestet. Hier läuft die Abfrage wunderbar durch.

      Du kannst die Überprüfung der Version auch deaktivieren, dazu musst du im bds-Script die Zeile 20 auskommentieren oder löschen. Und zusätzlich im Powershell Script den folgenden Block entfernen.

      # check for powershell version
      if ($PSVersionTable.PSVersion.Major -lt 4) {
      Write-Error “Powershell Version 4 required”
      exit 9000
      }

      • Kai Reply

        Hallo Sebastian,
        ich habe es geschafft die neue Version nachzustellen. PS: das mit der PowerShell habe ich jetzt auch hinbekommen. War doch die falsche Version (ups.)
        Nun zum Problem:
        Der Scan Job wird ordnungsgemäß durchgeführt: “Erfolgreich abgeschlossen. Skript benutzerdefiniert beendet: Powershell – Update(s) found”
        Problem habe ich bei der Installation der Treiber: “Die Installation von [ITruns Fujitsu Deskupdate Update V5] schlug fehl: Skript benutzerdefiniert beendet: DeskUpdate – Syntax error in command line.”

        Woran kann es liegen?

        • Kai Reply

          Ich hab mir noch einmal die LOG angeschaut: eventuell habe ich das gleiche Problem wie oben beschrieben. Ich habe mehrere ID die inst. werden sollen. wie kann ich bestimmen welche Reihenfolge zuerst dran ist?

  14. Tino Reply

    Hallo IT-runs Team,

    zunächst einmal vielen Dank für die tolle Arbeit!!

    Eine Frage zur Anpassung, lässt sich das Script so anpassen das es über bbt funktioniert, wenn ja, wie?

    Vielen Dank im Voraus!!

    Viele Grüße Tino

  15. Peter Müller Reply

    Nette Sache, vielen Dank!

    Eine Frage ist noch offen, wie bewerkstelligt man das ganze wenn man die Updates (Driver/Apps) lokal in einem Verzeichnis liegen hat und eben nicht möchte, dass jeder client sich diese aus dem Internet ziehen muss?
    In einer alten Version der ducmd.exe konnte man dafür in der ini einen Pfad angeben.
    In der DuCore.config.json kann ich das nicht tun, stelle ich hier einen Pfad ein kommt der Fehler DuCore.config.json kann nicht gefunden werden.
    Führe ich ducmd.exe ohne /web aus kommt die Meldung, keine lokalen Pakete gefunden.
    Wo diese liegen müssen weiß ich aber nicht.
    Jemand eine Lösung dafür?

    • Sebastian Post authorReply

      Hallo Peter,

      diese Frage habe ich mir damals schon gestellt, bin aber nicht tiefer eingestiegen und habe geschaut wie ich es geändert bekomme.

      Aber nach kurzer Recherche müssen die Dateien nur im Pfad abgelegt werden, der vom DUCMD erreicht werden kann. Also eventuell einen Ordner unter DUCMD. Also so zum Beispiel:

      > Fujitsu
      – DUCMD
      – Packages

      Dann soll man in der DuCore.config.json den RELATIVEN Pfad angeben, in meinem Fall also:

      “PackageRoot” : “..\\Packages”,

      In dem Pfad selber liegen die Downloads direkt von der Fujitsu Support Seite. Leider noch nicht getestet ob das wirklich so funktioniert.

      Gruß
      Sebastian

Kommentar verfassen