Orchestrate driver, BIOS/UEFI and firmware updates for Lenovo computers - with PowerShell!
Install-Module -Name 'LSUClient'
See available updates:
Get-LSUpdate
Find and install available updates:
$updates = Get-LSUpdate
$updates | Install-LSUpdate -Verbose
Install only packages that can be installed silently and non-interactively:
$updates = Get-LSUpdate | Where-Object { $_.Installer.Unattended }
$updates | Save-LSUpdate -Verbose
$updates | Install-LSUpdate -Verbose
Filtering out non-unattended packages like this is strongly recommended when using this module in MDT, SCCM, PDQ, remote execution via PowerShell Remoting, ssh or any other situation in which you run these commands remotely or as part of an automated process. Packages with installers that are not unattended may force reboots or attempt to start a GUI setup on the machine and, if successful, halt until someone clicks through the dialogs.
To get all available packages:
$updates = Get-LSUpdate -All
By default, Get-LSUpdate
only returns "needed" updates. Needed updates are those that are applicable to
the system and not yet installed. If you want to retrieve all available packages instead, use Get-LSUpdate -All
.
To filter out unneeded packages later, just look at the IsApplicable
and IsInstalled
properties.
The default logic is equivalent to:
Get-LSUpdate -All | Where-Object { $_.IsApplicable -and -not $_.IsInstalled }
Download drivers for another computer:
Get-LSUpdate -Model 20LS -All | Save-LSUpdate -Path 'C:\20LS_Drivers' -ShowProgress
Using the -Model
parameter of Get-LSUpdate
you can retrieve packages for another computer model.
In this case you almost always want to use -All
too so that the packages found are not filtered against your computer and all packages are downloaded.
For further documentation please see the documentation site and
run Get-Help -Detailed
on the functions in this module.
$env:TEMP\LSUPackages
- you may delete it yourself.xml
, .exe
and .inf
files from that domain for successful operation. Alternatively, a custom package repository can be used for completely internal or offline operation with the -Repository
parameter of Get-LSUpdate
. A custom repository can be served over HTTP(S) or just be a filesystem path - local or UNC.