Windows Server WSUS部署完成后需要和微軟的補(bǔ)丁服務(wù)器進(jìn)行同步,如果選擇的同步分類較多加上補(bǔ)丁日新月異的會有很多已經(jīng)被取代的補(bǔ)丁被下載,大大的浪費(fèi)了帶寬和磁盤空間。想要清理補(bǔ)丁也是頭痛的事情,不可能一個(gè)一個(gè)的看補(bǔ)丁是否需要。其實(shí)也不是每個(gè)補(bǔ)丁都是必要的,只要系統(tǒng)穩(wěn)定即可。每個(gè)月或者每個(gè)季度給客戶端打一次安全更新、關(guān)鍵更新的補(bǔ)丁就行了。下面是一個(gè)使用 PowerShell 拒絕審批取代補(bǔ)丁的腳本。
此腳本我在測試和生產(chǎn)環(huán)境中使用正常,使用腳本需要謹(jǐn)慎,有條件還是建議備份系統(tǒng)后在測試使用。一共有兩個(gè)腳本,第一個(gè)為刪除清理已經(jīng)下載的補(bǔ)丁目錄,第二個(gè)拒絕審批取代補(bǔ)丁。使用前先確認(rèn)幾個(gè)設(shè)置,然后運(yùn)行第一個(gè)腳本在執(zhí)行和微軟服務(wù)器同步后運(yùn)行第二個(gè)腳本(兩個(gè)腳本都必須在Windows Server WSUS服務(wù)器上以管理員方式運(yùn)行)后在手工批準(zhǔn)補(bǔ)丁下載。具體跟著下面的步驟走。
根據(jù)自己的需求來勾選需要同步的產(chǎn)品和補(bǔ)丁的分類,勾選的越多同步的補(bǔ)丁就會越多。
不建議自動審批,開啟后默認(rèn)會把所有的符合的補(bǔ)丁都審批了,這是需要很大的磁盤空間的。如果生產(chǎn)環(huán)境中有win7、win8、win10、office、SQL及其他的微軟產(chǎn)品想象下補(bǔ)丁有多少?
關(guān)閉下載快速安裝文件,我只需要已經(jīng)審批的補(bǔ)丁才下載,拒絕的補(bǔ)丁不下載。
以上三個(gè)設(shè)置確認(rèn)完畢后,我們開始運(yùn)行第一個(gè)腳本清理已經(jīng)下載的補(bǔ)丁目錄(如果你是新的Windows Server WSUS那么可以跳過這步)直接將以下代碼粘貼到記事本另存為 .ps1或在PowerShell ISE執(zhí)行
net stop wsusservicecd "C:\Program Files\Update Services\Tools".\wsusutil.exe resetecho Delete WSUS Folder Contentpausenet start wsusservice
這個(gè)同步的時(shí)間和你勾選的產(chǎn)品、分類和網(wǎng)絡(luò)有關(guān)等待同步完畢,先看看一共有多少補(bǔ)丁符合。我測試環(huán)境是兩臺win10 ltsc 2019 同步完有224個(gè)補(bǔ)丁
和微軟的補(bǔ)丁服務(wù)器同步完成后執(zhí)行拒絕審批取代更新的腳本,腳本執(zhí)行完畢后可以看到已經(jīng)拒絕了202個(gè)補(bǔ)丁,一下就少202個(gè)補(bǔ)丁,什么感覺?直接將以下代碼粘貼到記事本另存為 .ps1或在PowerShell ISE執(zhí)行
#Change server name and port number and $True if it is on SSL$Computer = $env:COMPUTERNAME$Domain = $env:USERDNSDOMAIN$FQDN = "$Computer" + "." + "$Domain"[String]$updateServer1 = $FQDN[Boolean]$useSecureConnection = $False[Int32]$portNumber = 8530# Load .NET assembly[void][reflection.assembly]::LoadWithPartialName("Microsoft.UpdateServices.Administration")$count = 0# Connect to WSUS Server$updateServer = [Microsoft.UpdateServices.Administration.AdminProxy]::getUpdateServer($updateServer1,$useSecureConnection,$portNumber)write-host "<<<Connected sucessfully >>>" -foregroundcolor "yellow"$updatescope = New-Object Microsoft.UpdateServices.Administration.UpdateScope$u=$updateServer.GetUpdates($updatescope )foreach ($u1 in $u ){if ($u1.IsSuperseded -eq 'True'){write-host Decline Update : $u1.Title$u1.Decline()$count=$count + 1}}write-host Total Declined Updates: $counttrap{write-host "Error Occurred"write-host "Exception Message: "write-host $_.Exception.Messagewrite-host $_.Exception.StackTraceexit}# EOF
篩選出“未經(jīng)審批”的補(bǔ)丁這就是我們想要的,全部選擇審批。安裝到已經(jīng)連接到Windows Server WSUS的計(jì)算機(jī)上。審批完成后等待Windows Server WSUS自動下載完成后根據(jù)計(jì)算機(jī)更新策略下發(fā)到計(jì)算機(jī)。