DeskUpdate can definitely do this, and I built a script under our old automation platform to manage it. The problem was that one day it would work fine, then there would be an update to DeskUpdate and it wouldn’t work anymore. And I think the installed version had to be the latest.
The magic incantation I used (and I suppose it is still the same) was:
But obviously also some extra logic to capture the return code from each command and something to parse the output or logs etc.
For ImmyBot you’d also want a “check if already up to date without actually installing” so that the Inventory could capture the current state. I don’t know what the commands for that are but they probably exist.
@cdmisp as you found out the deployment has been made to at least install the DeskUpdate app for now.
This still currently will need to be manually ran but at least saves your team the time of manually having to go find it and manually install it.
If you check the notes on the deployment we were also able to create a filter script for Fujitsu computers.
@James_Harper was a help to point in the direction that making it run would be possible and I was able to find a resource here that may assist us getting it to do so Ducmd - Fujitsu DeskUpdate Powershell Skripte • it-runs.de
(Leaving here mostly for reference for when we come back to review further)
This is a bit more of a time sink and we also have no computers to test it against ourselves and may take a bit of time to try dig into it further to get that part of it working/if possible to make it work.
I’m building a fujitsu laptop now so I threw this together. You’ll need to clone the Software definition so you can add a new configuration task (or just create a new configuration task and be sure to have it run after the software install). Only problem is it doesn’t work. ducmd /install /drv /web just always fails to download the first package (not a fault of my script - it does this even if I run it from a command prompt)
I’m interested to know if ducmd works for you? Maybe Fujitsu are cross at me for abusing their deskupdate download pages trying to get dynamic versions working
$DuCmd = Invoke-ImmyCommand {
$DuCmd = "C:\Program Files (x86)\Fujitsu\DeskUpdate\DuCmd.exe"
if (!(Test-Path $DuCmd)) {
$DuCmd = "C:\Program Files\Fujitsu\DeskUpdate\DuCmd.exe"
}
if (!(Test-Path $DuCmd)) {
Return $null
}
Return $DuCmd
}
if ($DuCmd -eq $null) {
Write-Error "DuCmd not found"
Return $False
}
if ($method -ne "set") {
Write-Host "Checking Updates"
$Updates = Invoke-ImmyCommand {
$DuCmd = $Using:DuCmd
$process = New-Object System.Diagnostics.Process
$process.StartInfo.UseShellExecute = $false
$process.StartInfo.RedirectStandardOutput = $true
$process.StartInfo.RedirectStandardError = $true
$process.StartInfo.FileName = $DuCmd
if($Args) {
$process.StartInfo.Arguments = ("/LIST", "/WEB")
}
$out = $process.Start()
$StandardError = $process.StandardError.ReadToEnd()
$StandardOutput = $process.StandardOutput.ReadToEnd()
if ($Process.ExitCode -ne 0) {
Throw "Failed to get updates - $($Process.ExitCode)"
}
$Updates = ([regex]::Matches($StandardOutput, "\[ID] ([^`r`n]*)") | % { $_.Groups | ? { $_.Name -eq 1 }}).Value
return $Updates
}
Write-Host "Found $($Updates.Count) update(s) to install"
return ($Updates.Count -eq 0)
}
$count = 5
do {
$count--
Write-Host "Installing Updates"
$ExitCode = Invoke-ImmyCommand -Timeout 600 {
$DuCmd = $Using:DuCmd
$process = New-Object System.Diagnostics.Process
$process.StartInfo.UseShellExecute = $false
$process.StartInfo.RedirectStandardOutput = $true
$process.StartInfo.RedirectStandardError = $true
$process.StartInfo.FileName = $DuCmd
if($Args) {
$process.StartInfo.Arguments = ("/INSTALL", "/APP", "/DRV", "/WEB", "/X")
}
$out = $process.Start()
$StandardError = $process.StandardError.ReadToEnd()
$StandardOutput = $process.StandardOutput.ReadToEnd()
Write-Host "Install returned $($Process.ExitCode)"
Write-Host $StandardError
Write-Host $StandardOutput
return $Process.ExitCode
}
switch ($ExitCode) {
0 {
Write-Host "Updates completed successfully"
return
}
300 {
if ($rebootPreference -eq "Suppress") {
Write-Warning "A reboot is required to complete updates but reboots are suppressed"
Return
}
Write-Host "Rebooting to complete updates"
Restart-ComputerAndWait
Return
}
default {
Write-Host "Error $ExitCode. Retrying $Count more time(s)"
}
}
} while ($count -ge 0)
<#
100 : Invalid PCI ID list for the package
101 : Your system is currently not supported.
102 : An update is required
103 : DeskUpdate can only be started once.
104 : Invalid (unexpected) manufacturer
105 : No valid data source found
106 : File could not be deleted
107 : The configuration file could not be read.
108 : Failure reading the BIOS table
109 : This BIOS package does not support the Silent Update feature.
110 : BIOS update failed
111 : A project could not be found
112 : Missing password for proxy user. Please set password for user in config
uration file. For more information can be found in ReadMe file. {0}
120 : The licence was not accepted.
200 : Package not found
201 : Package update not found
211 : A database exception occurred when searching for system information.
212 : An exception occurred when retrieving the list of system information
213 : A database exception occurred when searching for system information on
the basis of the package information.
214 : Database exception during the search for a package
215 : The DeskUpdate version could not be read
217 : The list of operating systems could not be read
305 : The server certificate is invalid.
306 : Authorisation failed
307 : File could not be saved.
309 : The connection to the download server could not be established The serv
er responded with an error code.
310 : The download has been aborted.
311 : The system information could not be retrieved from the deleted source.
312 : List of systems could not be retrieved from the deleted source
313 : The system information for this system board, this operating system and
/or this architecture was not found on the deleted source.
314 : The selected systems could not be retrieved from a deleted source
315 : The latest version of DeskUpdate could not be retrieved
316 : The DeskUpdate package could not be downloaded
317 : BIOS version could not be retrieved from the deleted source
321 : The package for updating the DeskUpdate could not be downloaded
322 : The requested package may not be 0 bytes in size.
323 : The connection to the authorisation server could not be established
331 : The package could not be downloaded
333 : Could not set authorization token {0}
334 : Cannot access service. Please verify your internet connection. {0}
399 : Incorrect proxy configuration field
400 : Unknown method
401 : Error in the application
402 : A file with a special template could not be found
403 : Installation failed
501 : Illegal bool Literal
502 : The application returned an error code.
503 : Did not succeed in extracting the file to the directory.
504 : The file has an invalid signature.
600 : PARSER error
601 : Incorrectly formatted date. Expected: yyyy-mm-dd
602 : Unknown PCIIDLISTE
603 : The parameter is 'zero' or blank.
604 : Unsupported registration key
605 : Variable is 'zero' or blank
606 : The package cannot be 'zero' for this condition.
700 : The system information could not be read
701 : Hardware scanner could not be executed.
702 : Unsupported registration type
703 : The Windows release ID could not be read
704 : Unknown registry root
705 : Unknown registration view
800 : Installation thread has already been started
801 : More than one installation program instance has been created.
802 : An element was added to the queue after installation was completed.
803 : The system is running on battery. Please connect the system to a power
supply unit or use the --ibat flag.
804 : The file has a signature which is not supported.
900 : DUCMD cannot be started from a root directory. Insert it in a subdirect
ory please.
901 : Application folder could not be read
902 : Sppwd requires an argument
903 : Unknown command line option
904 : Insufficient rights to access the directory
905 : No such directory
906 : This is NOT a directory.
907 : Directory access failure
908 : There is no such file.
909 : This option can only be set once.
910 : This option requires an additional parameter.
911 : Missing option
2000 : Invalid package ID
2002 : Error in the processing of the configuration file
2003 : No file found
2004 : No database found
2008 : The installation has been aborted.
9099 : Internal error
#>
After enabling SSL Inspection on my firewall I can see that Fujitsu is giving my DeskUpdate download requests a status code of 420 “Enhance your calm”, which is a deprecated status code used by early versions of Twitter and means “too many requests”.