PSWindowsUpdate 允許管理者遠端檢查、安裝、删除和隐藏 Windows 伺服器和工作站上的更新。
使用PSWindowsUpdate PowerShell 子產品從指令行管理 Windows 更新。但是PSWindowsUpdate 子產品未内置在 Windows 中,但是windows可以從線上存儲庫 (PSGallery) 在 Windows 10/11 和 Windows Server 2022/2019/2016 上安裝 PSWindowsUpdate 子產品。
PSWindowsUpdate 子產品對于管理Windows Server Core或Hyper-V Server(沒有 GUI)上的更新以及在稽核模式下更加具有價值。對于想通過批量化安裝更新檔,也具有很高價值
線上安裝PSWindowsUpdate
從線上存儲庫 (PSGallery) 在 Windows 10/11 和 Windows Server 2022/2019/2016 上安裝 PSWindowsUpdate 子產品,指令:
Install-Module -Name PSWindowsUpdate -Force
安裝完成後,需要檢查包:
Get-Package -Name PSWindowsUpdate
離線安裝PSWindowsUpdate
在 Windows 2012R2/Windows 8.1 及更低版本的早期版本上安裝 PowerShell 子產品時,可以手動安裝 PSWindowsUpdate
将 PSWindowsUpdate 子產品下載下傳到任何線上計算機 Save-Module –Name PSWindowsUpdate –Path C:\ps\:
或者到已經安裝子產品的機器,打開該路徑:
%WINDIR%\System32\WindowsPowerShell\v1.0\Modules
将 pswindowsupdate 子產品複制到離線 windows 計算機
将子產品複制到離線的目标計算機上的以下檔案夾
%WINDIR%\System32\WindowsPowerShell\v1.0\Modules;
您可以使用Update-WUModule cmdlet 在其他計算機或伺服器上遠端安裝它。例如,要将 PSWindowsUpdate 子產品從您的計算機複制到兩個遠端主機,請運作以下指令(您需要通過 WinRM 協定通路遠端伺服器):
\
$Targets = "lon-fs02", "lon-db01"
Update-WUModule -ComputerName $Targets –Local
配置 PowerShell 腳本執行政策:
Set-ExecutionPolicy –ExecutionPolicy RemoteSigned -force
您現在可以将子產品導入您的 PowerShell 會話:Import-Module PSWindowsUpdate
子產品指令的用法
您可以在 PSWindowsUpdate 子產品中顯示可用 cmdlet 的清單,如下所示:
get-command -module PSWindowsUpdate
指令清單
Clear-WUJob – 使用 Get-WUJob 清除 Task Scheduler 中的 WUJob;
Download-WindowsUpdate(别名 Get-WindowsUpdate –Download)——擷取更新清單并下載下傳它們;
Get-WUInstall、Install-WindowsUpdate(别名Get-WindowsUpdate –Install)——安裝 Windows 更新;
Hide-WindowsUpdate(别名Get-WindowsUpdate -Hide:$false)——隐藏更新;
Uninstall-WindowsUpdate – 使用 Remove-WindowsUpdate 删除更新;
Add-WUServiceManager——在電腦上注冊更新伺服器(Windows Update Service Manager);
Enable-WURemoting —啟用 Windows Defender 防火牆規則以允許遠端使用 PSWindowsUpdate cmdlet;
Get-WindowsUpdate (Get-WUList) — 顯示符合指定條件的更新清單,允許您查找和安裝更新。這是 PSWindowsUpdate 子產品的主要 cmdlet。允許從 WSUS 伺服器或 Microsoft Update 下載下傳和安裝更新。允許您在安裝更新時選擇更新類别、特定更新并設定計算機重新開機規則;
Get-WUApiVersion – 擷取電腦上的 Windows Update Agent 版本;
Get-WUHistory – 顯示已安裝更新清單(更新曆史);
Get-WUInstallerStatus — 檢查 Windows Installer 服務狀态;
Get-WUJob – 檢查任務計劃程式中的 WUJob 更新任務;
Get-WULastResults — 上次搜尋和安裝更新的日期(LastSearchSuccessDate和LastInstallationSuccessDate);
Get-WURebootStatus — 允許您檢查是否需要重新啟動才能應用特定更新;
Get-WUServiceManager – 列出更新源;
Get-WUSettings – 擷取 Windows Update 用戶端設定;
Invoke-WUJob——遠端調用Task Scheduler中的WUJobs任務,立即執行PSWindowsUpdate指令;
Remove-WindowsUpdate – 允許通過 KB ID 解除安裝更新;
Remove-WUServiceManager – 禁用 Windows 更新服務管理器;
Set-PSWUSettings – 将 PSWindowsUpdate 子產品設定儲存到 XML 檔案;
Set-WUSettings – 配置 Windows Update 用戶端設定;
Update-WUModule – 更新 PSWindowsUpdate 子產品(您可以通過從目前子產品複制或從 PSGallery 更新來更新遠端計算機上的子產品);
Reset-WUComponents –允許您将計算機上的 Windows Update 代理重置為預設狀态。
使用PSWindowsUpdate更新更新檔後,在圖形化界面看不到更新??
使用該指令更新更新檔,圖形化界面不會更新更新檔已經安裝了,因為是用的不同途徑更新更新檔,底層調用的api不同。這個時候,為了讓圖形化界面可以顯示更新,需要執行下面的指令:
usoclient ScanInstallWait
UsoClient StartScan
一般我會在更新完更新檔執行一次,重新開機後在執行一次指令。基本會顯示最新狀态,如果還沒更新最新狀态,在重新開機一次,就肯定顯示是最新狀态。
使用例子
要檢查目前的 Windows Update 用戶端設定,請運作以下指令:
Get-WUSettings
使用 PowerShell 掃描和下載下傳 Windows 更新
Get-WindowsUpdate
您可以使用或
Get-WUList
指令 列出更新伺服器上目前計算機可用的更新。
要檢查遠端計算機上的可用更新清單,請運作以下指令:
Get-WUList –ComputerName server2
您可以檢查您的 Windows 應該從哪裡接收更新。運作以下指令:
Get-WUServiceManager
要從計算機收到的更新清單中删除特定産品或 KB,您可以通過以下方式排除它們:
類别(-NotCategory);
标題(-NotCategory);
更新編号 ( -NotKBArticleID)。
例如,讓我們從清單中排除 OneDrive、驅動程式更新和特定 KB:
Get-WUlist -NotCategory "Drivers" -NotTitle "OneDrive" -NotKBArticleID KB4489873
要從 Windows 更新伺服器(而不是本地 WSUS)自動下載下傳并安裝适用于您的 Windows 裝置的所有可用更新,請運作以下指令:
Install-WindowsUpdate -MicrosoftUpdate -AcceptAll -AutoReboot
AcceptAll參數接受所有更新包的安裝,AutoReboot允許 Windows 在安裝更新後自動重新啟動。
您還可以使用以下選項:
IgnoreReboot – 禁用自動重新開機;
ScheduleReboot – 設定重新啟動計算機的确切時間。
隻能按 KB 編号安裝特定的更新包:
Get-WindowsUpdate -KBArticleID KB2267602, KB4533002 -Install
如果要從安裝清單中排除某些更新,請運作以下指令:
Install-WindowsUpdate -NotCategory "Drivers" -NotTitle OneDrive -NotKBArticleID KB4011670 -AcceptAll -IgnoreReboot
您可以使用 Get-WUJob 檢查更新安裝任務的狀态:
Get-WUJob -ComputerName $ServerNames
您可以擷取有關特定更新的安裝日期的資訊:
Get-WUHistory| Where-Object {$_.Title -match "KB4517389"} | Select-Object *|ft
檢查 Windows 更新曆史記錄
Get-WUHistory
找到超過 60 天未安裝更新的計算機,并在Out-GridView 互動表中顯示結果:
\
$result=@()
Foreach ($Computer in $Computers) {
$result+= Get-WULastResults -ComputerName $Computer.Name
}
$result| Where-Object { $_.LastInstallationSuccessDate -lt ((Get-Date).AddDays(-60)) }| Out-GridView
使用 PowerShell 解除安裝 Windows 更新 (Remove-WindowsUpdate)
您可以使用Remove-WindowsUpdate cmdlet 通過 PowerShell 正确解除安裝更新。隻需将 KB 編号指定為 KBArticleID 參數的參數即可。要延遲計算機自動重新開機,請添加 –NoRestart 選項:
Remove-WindowsUpdate -KBArticleID KB4489873 -NoRestart
如何使用 PowerShell 隐藏 Windows 更新?
您可以隐藏特定的更新,這樣它們就不會被計算機上的 Windows 更新服務安裝(通常您需要隐藏驅動程式更新)。例如,要隐藏 KB4489873 和 KB4489243 更新,請運作以下指令:
$HideList = "KB4489873", "KB4489243"
Get-WindowsUpdate -KBArticleID $HideList –Hide
下次使用 Get-WUlist 指令掃描更新時,隐藏的更新将不會顯示在可安裝的更新清單中。
顯示被隐藏在此計算機上的更新清單的方式:
Get-WindowsUpdate –IsHidden
要取消隐藏某些更新,請運作以下指令: