[PowerShell] Windows Update Module (cmdlet) 未加入網域的機器自動執行Windows Update

利用排程搭配Power Shell自動執行選取的Windows Update項目

       由於公司產業屬性的關係,時常就有厲害又犀利的稽核人員來例行稽查,是否定時執行安全性更新是每次基本的檢查項目。

      公司內測試機是由開發團隊自行管理,但無法獲得加入Domain的許可,沒辦法套用戶端自動更新的群組性原則(GPO),此時定期執行Windows 安全性更新就落到開發團隊內小菜身上。

      最近開的VM越來越多,一個一個點再加上重開機真的還蠻花時間的,上禮拜到微軟上了百敬老師的Power Shell入門課,聯想到如果Server是安裝Server Core那種沒有UI的版本,

小菜連點的機會都沒有了。想起Power Shell自動化的意義,用Bin搜尋了一個solution: Windows Update PowerShell Module

https://gallery.technet.microsoft.com/scriptcenter/2d191bcd-3308-4edd-9de2-88dff796b0bc

步驟1:將檔案解壓縮後放到以下目錄

%WINDIR%\System32\WindowsPowerShell\v1.0\Modules

步驟2:以系統管理員執行power shell(ISE),載入Module

PS > Import-Module PSWindowsUpdate

PS > ipmo C:\Windows\System32\windowspowershell\v1.0\Modules\PSWindowsUpdate

步驟3: 查看PSWindowsUpdate所提供的功能

步驟4:查看WUServiceManger (有哪些WSUS可以下載Windows update)

PS C:\Windows\system32> Get-WUServiceManager

步驟5:查看有哪些Winodws Update

PS C:\Windows\system32> Get-WUList

加上查詢條件

PS C:\Windows\system32> Get-WUList -Title 安全性更新

步驟6: 安裝指定更新(指定KB更新)

PS C:\Windows\system32> Get-WUInstall -AcceptAll -KBArticleID KB3054978

也可以針對"安全性"自動做更新,或是選一個KB清單。

PS C:\Windows\system32> Get-WUInstall -AcceptAll -AutoReboot -Title 安全性更新
PS C:\Windows\system32> $KBList = "KB3081320", "KB3097877"
PS C:\Windows\system32> Get-WUInstall -KBArticleID $KBList -AcceptAll

 

小結:

 第一步算是完成了,接下來就是和同事把她串成Routine的ps1,然後每一台測試機都加入。

 拯救工程師的健康+1。