"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

Dell Command | Update

mr.nice. 18.05.2021 - 16:00 6844 16 Thread rating
Posts

mr.nice.

endlich fertig
Avatar
Registered: Jun 2004
Location: Wien
Posts: 6297
Hallo community,
hier folgt eine kleine Anleitung, wie man Gerätetreiber von Dell Computern in einer Firmenumgebung vollautomatisiert aktualisieren kann.

Punkt eins, es gibt verschiedene Tools von Dell die Treiber aktualisieren können, für Privat PCs empfiehlt sich durchaus Dell Support Assist,
auf Firmengeräten wollen wir Dell Command | Update, da dies ein eigenes command line interface hat und damit konfiguriert werden kann.

Als erstes muss sichergestellt werden, dass kein Dell Support Assist oder Dell Update mehr installiert ist, sonst schlägt die Installation fehl.
Ebenso gilt, dass keine ältere Dell Command | Update Version mehr installiert sein darf, wenn der MSI Installer verwendet werden soll.
Der EXE Installer von Dell Command | Update kann im Normalfall mit /S als Installationsparamater auch Upgrades bestehender Installationen durchführen.

Hier findet ihr uninstall strings von unterschiedlichen Dell Support Assist Versionen:

Code:
::3.6.x
"C:\Program Files\Dell\SupportAssistAgent\bin\SupportAssistUninstaller.exe" -s
::old version
"C:\Program Files\Dell\SupportAssist\uninstaller.exe" /arp
::2.1.3.5
MsiExec.exe /qn /norestart /X{8D7B279C-A661-465C-9658-F62FBD6A6B91}
::2.1.4.14
MsiExec.exe /qn /norestart /X{9DD6B149-CEBC-4910-B11A-242393EDF6D3}
::2.2.3.2
MsiExec.exe /qn /norestart /X{4CB4741A-20C1-454E-8276-993D06A76D67}
::3.0.0.145
MsiExec.exe /qn /norestart /X{56114D24-F838-4743-9B51-D4267E1A3C34}
::3.0.1.62
MsiExec.exe /qn /norestart /X{50EF2C72-95EC-4206-AAC3-9E84004A6140}
::3.0.2.48
MsiExec.exe /qn /norestart /X{5A18ABE3-52D1-4CA5-9169-25EC7E789582}
::3.1.0.142
MsiExec.exe /qn /norestart /X{E98E94E2-12D1-48E5-AC69-2C312F466136}
::3.2.0.90
MsiExec.exe /qn /norestart /X{45FD01F4-B11B-4A58-B465-1D600B5CDF64}
::3.2.1.94
MsiExec.exe /qn /norestart /X{0309AC01-330F-494C-B27D-58E297E4674F}
::3.3.0.341
MsiExec.exe /qn /norestart /X{425786D5-8047-4CB6-AE91-0EE67BD829F8}
::3.4.0.22
MsiExec.exe /qn /norestart /X{AEFE431B-C6FB-449E-B2DB-93E67B8B1DAF}
:: 3.9.0.234
MsiExec.exe /qn /norestart /X{5106801D-CA18-4173-85B9-D74C33358F7F}

Als Fallbackvariante habe ich noch dieses Powershell Skript im Einsatz, das auch die AppX und andere Versionen von Dell Support Assist wegbügelt:

Code:
<# 
.Synopsis 
Checks and uninstall Dell SupportAssist for PCs if installed on the box.
.Description
This script checks and uninstall Dell SupportAssist for PCs if installed on the box.
.Example
.\CheckAndUnInstall.ps1
#>

Set-ExecutionPolicy Bypass -Force

Function RemoveConsumerAppxPackage
{
    $CurrentAppxPkg = Get-AppxPackage -AllUsers | Where-Object { $_.Name -like "DellInc.DellSupportAssistforPCs" }
    if($CurrentAppxPkg)
    {
        & "$env:ProgramFiles\Dell\SupportAssistAgent\bin\Appx\RemoveExistingAppx.ps1"
        & "$env:ProgramFiles\Dell\SupportAssistAgent\bin\Appx\RemoveAppxPackage.ps1"
    }
}

# Check if SA Consumer Appx is installed on the box
Function CheckAndUnInstall-SAConsumerVersion
{
    # Check the version of SA Consumer 
    $CurrentSAPkg = Get-WMIObject -Class Win32_Product  | Where-Object { $_.Name -like "Dell SupportAssist" }
    if(Test-Path 'HKLM:\SOFTWARE\DELL\SupportAssistAgent')
    {
        $SAVer = Get-ItemProperty -Path 'HKLM:\SOFTWARE\DELL\SupportAssistAgent' | Select-Object -ExpandProperty Version
        if($SAVer)
        {
            # remove Appx if existing
            RemoveConsumerAppxPackage

            if($SAVer -like "1.5.*" -or $SAVer -like "1.6.*")
            {
                # do nothing
            }
            else
            {
                $MSIArguments = @(
                    "/x"
                    ('"{0}"' -f $CurrentSAPkg.IdentifyingNumber)
                    "/quiet"
                )
                Start-Process msiexec.exe -Wait -ArgumentList $MSIArguments
            }
        }
    }
}

CheckAndUnInstall-SAConsumerVersion

Dell Update uninstall strings:
Code:
uninstall Dell Update 3.x
MsiExec.exe /qn /norestart /X{70E9F8CC-A23E-4C25-B292-C86C1821587C}

uninstall Dell Update 4.x
MsiExec.exe /qn /norestart /X{944FB5B0-9588-45FD-ABE8-73FC879801ED}

Damit ist erstmal gewährleistet, dass keine consumer software, die die Installation von Dell Command | Update verhindert, mehr auf dem PC vorhanden ist.
Als nächstes wollen wir ältere Versionen von Dell Command | Update verschwinden lassen, wenn wir den MSI-Installer verwenden, hier die dafür nötigen uninstall strings:

Code:
uninstall Dell Command | Update 2.x
MsiExec.exe /qn /norestart /X{EC542D5D-B608-4145-A8F7-749C02BE6D94}

uninstall Dell Command | Update 3.x
MsiExec.exe /qn /norestart /X{0C8D5FDB-111E-4F8C-B469-5F330066410E}

uninstall Dell Command | Update 4.x
MsiExec.exe /qn /norestart /X{4CD85DD3-A024-4409-A0F2-F70DE1E4A935}

uninstall Dell Command | Update 3.x for Windows 10
MsiExec.exe /qn /norestart /X{5669AB71-1302-4412-8DA1-CB69CD7B7324}

uninstall Dell Command | Update 4.x for Windows 10
MsiExec.exe /qn /norestart /X{4CCADC13-F3AE-454F-B724-33F6D4E52022}

Jetzt brauchen wir die aktuelle Version von Dell Command | Update, die zum jetzigen Zeitpunkt Version 4.2 ist, welche hier bezogen werden kann:
https://www.dell.com/support/kbdoc/...-update?lang=en

Aus der EXE Datei kann das MSI Package extrahiert werden, nach folgender Anleitung:
https://www.dell.com/support/kbdoc/...allationspakets

Das MSI Package kann so silent installiert werden:
Code:
msiexec.exe /i "DellCommandUpdate.msi" ALLUSERS=1 /qn /norestart /log output.log

Jetzt konfigurieren wir Dell Command | Update so, dass nur die Applikation selbst und Gerätetreiber aktualisiert werden, das Updaten von EFI bzw. BIOS und device firmwares sollte unbedingt in einem anderen Workflow erfolgen, um diversen Problemen aus dem Weg zu gehen:
Code:
"C:\Program Files (x86)\Dell\CommandUpdate\dcu-cli.exe" /configure -silent -updatetype=driver,application -userConsent=disable

Zu guter Letzt können wir mit folgendem Befehl die jeweils passenden und aktuellsten Gerätetreiber von Dell herunterladen und im Hintergrund installieren, ohne dabei einen Neustart zu erzwingen:
Code:
"C:\Program Files (x86)\Dell\CommandUpdate\dcu-cli.exe" /applyupdates -silent -reboot=disable -outputlog=C:\temp\dcu.log

Wenn man das ganze auf die Spitze treiben will, kann man das driver repository auch selbst hosten und muss dieses dann auch eigenständig aktuell halten. Selbst dafür gibt es Software von Dell ;)

Wenn jemand für andere Hersteller eine ähnliche Prozedur auf Lager hat,
würde ich mich über das Teilen dieses Wissens sehr freuen :cool:

Pass on what you have learned - Yoda
Bearbeitet von mr.nice. am 26.05.2021, 13:12

DAO

Si vis pacem, para bellum
Avatar
Registered: Mar 2001
Location: Austria
Posts: 4908
du brauchst nicht die msi extrahieren die .exe mit /S aufrufen tut das selbe ;)

edit: /S gilt auch für command configure
Bearbeitet von DAO am 18.05.2021, 17:07

tialk

Here to stay
Avatar
Registered: May 2002
Location: vo/stmk
Posts: 3277
DCU 4.2 ist übrigens drausen

mr.nice.

endlich fertig
Avatar
Registered: Jun 2004
Location: Wien
Posts: 6297
Aye, ich habe 4.2 gestern bei uns in der Firma verteilt, den Startpost habe ich angepasst.

4.1 habe ich entfernt mit

uninstall Dell Command | Update 4.x
Code:
MsiExec.exe /qn /norestart /X{4CD85DD3-A024-4409-A0F2-F70DE1E4A935}

Ich bevorzuge die Installation und Deinstallation per MSI, da sehe ich mehr als mit dem Installer von Dell.
Bearbeitet von mr.nice. am 26.05.2021, 09:55

DAO

Si vis pacem, para bellum
Avatar
Registered: Mar 2001
Location: Austria
Posts: 4908
@mr.nice:
wenn du eine neue version von dell command | xxx installierst wird auch die alte deinstalliert.

hab ich gerade nochmals bei ein paar hundert geräten getestet ;)

mr.nice.

endlich fertig
Avatar
Registered: Jun 2004
Location: Wien
Posts: 6297
Ack, der Dell Installer kann das mit /S Parameter, ich mache es dennoch lieber mit dem extrahierten MSI Paket.
Da sehe ich mehr Output, falls etwas schief geht.
Bearbeitet von mr.nice. am 26.05.2021, 12:42

DAO

Si vis pacem, para bellum
Avatar
Registered: Mar 2001
Location: Austria
Posts: 4908
kein thema, es sollte jeder beide varianten zur auswahl haben/kennen. :)

mr.nice.

endlich fertig
Avatar
Registered: Jun 2004
Location: Wien
Posts: 6297
Stimmt, ich habe die von dir genannte Möglichkeit auch im Startpost ergänzt. :cool:

DAO

Si vis pacem, para bellum
Avatar
Registered: Mar 2001
Location: Austria
Posts: 4908
Es macht auch Sinn auf den Hosts in Dell Command | Update das Bios Passwort zu speichern:
Code:
  "C:\Program Files (x86)\Dell\CommandUpdate\dcu-cli.exe"  /configure -biosPassword="ABCdefg1234!!!xyz§$asd"
Non Admins können das Passwort nicht anzeigen!

mr.nice.

endlich fertig
Avatar
Registered: Jun 2004
Location: Wien
Posts: 6297
Gut zu wissen, dass das so auch geht. Ich mache es mit per Dell Command | Configure erstellten EXE Dateien, die auf den Rechnern beim ersten Windows Boot ausgeführt werden.
Dort wird dann BIOS Adminkennwort, Bootlaufwerke, UEFI und PXE Parameter, Power Management und Wake-on-LAN, Secure Boot, Asset Tag,... festgelegt.

Diese ganze Bereinigungslitanei wurde übrigens deshalb notwendig, weil manche Kollegen Laptops nicht neu aufgesetzt,
sondern mit einem vorinstallierten Dell Image ausgeliefert haben, diese "Flecken" galt es zu säubern.
Aus der Reihe tanzen, ja gerne, aber keine Computer ;)
Bearbeitet von mr.nice. am 26.05.2021, 15:02

DAO

Si vis pacem, para bellum
Avatar
Registered: Mar 2001
Location: Austria
Posts: 4908
das passwort ist nur um deploy hinterlegt.
gesetzt werden im bios muss es werden via cctk ;)

die exes kannst du auch skippen und via .cctk files arbeiten (da tust dir leichter mit dem scripten bzw wenns änderungen gibt).
und du kannst dir die cctk commands nat. auch im mdt/sccm deployment einbauen und/oder via pdq machen. ;)
Bearbeitet von DAO am 26.05.2021, 20:19

mr.nice.

endlich fertig
Avatar
Registered: Jun 2004
Location: Wien
Posts: 6297
BIOS- und Firmware-Updates mache ich mittlerweile auch mit Dell Command | Update.
Um das BIOS-Kennwort nicht im Klartext an die Rechner zu übertragen, habe ich mich an folgenden Artikel gehalten: https://www.dell.com/support/kbdoc/...-command-update

dcu-cli Konfiguration für BIOS und Firmware mache ich so:
Code:
"C:\Program Files (x86)\Dell\CommandUpdate\dcu-cli.exe" /configure -silent -updatetype=bios,firmware -userConsent=disable

Apply BIOS and Firmware Updates so, natürlich mit anderen Schlüsseln ;)
Code:
"C:\Program Files (x86)\Dell\CommandUpdate\dcu-cli.exe" /applyupdates -encryptionkey=""MyEncryptionKey01"" -encryptedpassword=""AdMNCABdAq6eZ2CX4My2aUFINCYBzTv99yYH8eb4Yjow+4jjppfZzt8pICNXj+MMLzQjCVJFvGfKEd7toFXy57fDwVZq6G+dpdUg8++yZQWmPKWTKBbu/tAxi9Ni"" -silent -reboot=disable -outputlog=C:\temp\bios-update.log

Die gesamte Prozedur sieht so aus:
bios_and_firmware_procedure_258791.png

Im Schritt 12 konfiguriere ich DCU wieder auf driver and application updates, denn passende Treiber-Updates sollen die Leute ruhig selbst machen können,
aber wann BIOS und Firmware verteilt werden, das will ich lieber selbst in der Hand haben.

Code:
"C:\Program Files (x86)\Dell\CommandUpdate\dcu-cli.exe" /configure -silent -updatetype=driver,application -userConsent=disable
Bearbeitet von mr.nice. am 01.06.2022, 11:40

DAO

Si vis pacem, para bellum
Avatar
Registered: Mar 2001
Location: Austria
Posts: 4908
du kannst das pwd auch auf den clients speichern:

unencrypted:
Code:
"C:\Program Files (x86)\Dell\CommandUpdate\dcu-cli.exe"  /configure -biosPassword="8adP4ssWord123ZWELF!"

encrypted:
Code:
"C:\Program Files (x86)\Dell\CommandUpdate\dcu-cli.exe"  /configure -secureBiosPassword="8adP4ssWord123ZWELF!"

Btw: das Passwort wird immer verschlüsselt hier gespeichert (sonfern dus am client speicherst):

Code:
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Dell\UpdateService\Clients\CommandUpdate\Preferences\Settings\General\
als REG_SZ:
Code:
BiosPassword

Du kannst auch für Bitlocker autosuspend aktivieren mit dem Parameter: -autoSuspendBitLocker
source
Bearbeitet von DAO am 01.06.2022, 13:20

mr.nice.

endlich fertig
Avatar
Registered: Jun 2004
Location: Wien
Posts: 6297
Danke für die Infos DAO! Nachdem der Reg-Key von authentifizierten Benutzern ausgelesen werden kann, will ich das Passwort eigentlich nicht einmal in verschlüsselter Form am Client speichern,
sondern in verschlüsselter Form hinschicken, zu dem Zeitpunkt wo ich es am Gerät brauche.

DAO

Si vis pacem, para bellum
Avatar
Registered: Mar 2001
Location: Austria
Posts: 4908
das lokale zwischenspeichern macht nat. eher sinn wenn die user selbst updaten dürfen/müssen bzw. du den lokalen service-technikern/support-mitarbeitern keinen direkten zugang geben willst. ;)
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz