熱門分類
載入中…
目錄0%

🖥️ WSUS 客戶端強制報到全策略(清 GUID、COM、PsExec)

    🖥️ WSUS 客戶端強制報到全策略(清 GUID、COM、PsExec)

    在 WSUS 環境中,最常見的問題之一就是「客戶端不報到、不同步、不會出現在 WSUS 主控台」。 本篇提供一套企業級、完整可落地的強制報到策略,涵蓋:

    • 🔧 清除 WSUS Client GUID(重建識別碼)
    • 🔧 重置 SoftwareDistribution 及授權
    • 📡 強制檢查更新與報到(wuauclt / usoclient / PowerShell)
    • 🧩 COM API 強制報到(SYSTEM Level)
    • 🛠️ PsExec SYSTEM 層級 COM 報到(最強方式)
    • 🔁 自動化腳本一次完成(已可直接落地)

    這些方法皆已在企業大量 Win10 / Win11 環境實測,可有效處理報不到、GUID 重複、紀錄損毀等問題。


    📌 第一章:確認 WSUS 客戶端狀態

    1.1 查看客戶端目前註冊狀態

    Get-WindowsUpdateLog
    Get-Item "HKLM:\Software\Microsoft\Windows\CurrentVersion\WindowsUpdate"
    

    1.2 常見失效徵兆

    • WSUS 主控台看不到該機器
    • 報到日期停留數天甚至數週
    • GUID 重複(多台同一 GUID)
    • SoftwareDistribution 損毀

    📌 第二章:清除 WSUS GUID(完整重置法)

    此方法會讓 Windows 重新產生 WSUS Client ID,是最常用的修復流程。

    2.1 PowerShell 一鍵清除 GUID

    # 停止 Windows Update 服務
    net stop wuauserv
    net stop bits
    
    # 移除 WSUS 判別碼
    Remove-Item "HKLM:\Software\Microsoft\Windows\CurrentVersion\WindowsUpdate" -Recurse -Force
    
    # 重建 SoftwareDistribution
    Remove-Item "C:\Windows\SoftwareDistribution" -Recurse -Force
    
    # 重新啟動服務
    net start wuauserv
    net start bits
    
    # 重新產生 GUID
    wuauclt /resetauthorization /detectnow
    

    重置後,系統會重新註冊 WSUS 並建立新的 ClientID。


    📌 第三章:強制檢查更新與報到(官方工具)

    3.1 Windows 10 / 11(USO Client)

    usoclient startscan
    usoclient startdownload
    usoclient startinstall
    usoclient resumeupdate
    

    3.2 舊版 Windows(WUAUCLT)

    wuauclt /detectnow
    wuauclt /reportnow
    

    注意:在 Win10/Win11 上,wuauclt 部分參數已被標示 deprecated,但 /reportnow 仍可強制回報 WSUS


    📌 第四章:使用 COM API 強制報到(WSUS 最核心方式)

    若想真正強制 Windows 立即與 WSUS 報到(不受排程與延遲限制),官方唯一方法就是 COM API:

    $updateSession = New-Object -ComObject Microsoft.Update.Session
    $updateSearcher = $updateSession.CreateUpdateSearcher()
    $searchResult = $updateSearcher.Search("IsInstalled=0")
    

    這會立即觸發 Windows Update 與 WSUS 同步。

    4.1 完整 COM API 強制報到腳本

    $Session = New-Object -ComObject "Microsoft.Update.Session"
    $Searcher = $Session.CreateUpdateSearcher()
    $Result = $Searcher.Search("IsInstalled=0 and Type='Software'")
    Write-Host "Updates Found: " $Result.Updates.Count
    

    此方法比 USO/WAUCLT 更可靠。


    📌 第五章:PsExec SYSTEM 層級 COM 報到(最強策略)

    有些機器就算用 PowerShell 也無法強制報到,原因是:

    WSUS 報到行為必須在 SYSTEM 權限下才能完全生效。

    因此要使用 PsExec 以 SYSTEM 身份執行 COM API:

    5.1 使用 PsExec SYSTEM 報到

    psexec -sid powershell.exe
    

    5.2 在 SYSTEM 裡執行 COM 報到

    $Session = New-Object -ComObject "Microsoft.Update.Session"
    $Searcher = $Session.CreateUpdateSearcher()
    $Searcher.Search("IsInstalled=0")
    

    這是最強制、最保險、最高成功率的 WSUS 報到方法。


    📌 第六章:企業級「一鍵修復」整合腳本(推薦)

    以下腳本整合了你需要的所有功能: 清除 GUID → 重建資料夾 → 時間同步 → 強制報到 → SYSTEM COM 報到。

    6.1 wsus_fix.ps1 — 一鍵完整修復

    # 1. 時間同步
    w32tm /resync /force
    
    # 2. 停止服務
    net stop wuauserv
    net stop bits
    
    # 3. 清 GUID + 重建更新資料夾
    Remove-Item "HKLM:\Software\Microsoft\Windows\CurrentVersion\WindowsUpdate" -Recurse -Force
    Remove-Item "C:\Windows\SoftwareDistribution" -Recurse -Force
    
    # 4. 啟動服務
    net start wuauserv
    net start bits
    
    # 5. 強制偵測
    wuauclt /resetauthorization
    wuauclt /detectnow
    
    # 6. USO 強制偵測
    usoclient startscan
    
    # 7. COM API(User Mode)
    $Session = New-Object -ComObject "Microsoft.Update.Session"
    $Searcher = $Session.CreateUpdateSearcher()
    $Searcher.Search("IsInstalled=0") | Out-Null
    
    Write-Host "初步修復完成,如需最高成功率請執行 SYSTEM COM 報到"
    
    ---

    6.2 SYSTEM 最高成功率模式(需 PsExec)

    另存為 wsus_system_report.ps1

    $Session = New-Object -ComObject "Microsoft.Update.Session"
    $Searcher = $Session.CreateUpdateSearcher()
    $Searcher.Search("IsInstalled=0")
    Write-Host "SYSTEM 層級 WSUS 強制報到完成"
    

    執行方式:

    psexec -sid powershell.exe -file wsus_system_report.ps1
    
    ---

    📌 第七章:遠端多台電腦批次修復(PsExec)

    針對企業環境(大量 PC),可批次執行:

    psexec @hosts.txt -s powershell.exe -file wsus_fix.ps1
    

    hosts.txt 格式:

    PC001
    PC002
    PC003
    

    📌 第八章:最佳實務建議(企業級)

    • 🕒 每月定期執行清理 SoftwareDistribution
    • 🧱 統一 SCCM/WSUS GPO 設定,避免 GUID 重複
    • 🔐 依需求開啟 Telemetry,提升 WSUS 回報成功率
    • 📡 定期執行 SYSTEM COM 報到(最完整)
    • 📂 保留完整更新事件記錄(UpdateLog)

    📌 結語

    WSUS 報不到通常不是單一原因,而是 GUID、授權、更新資料夾、SYSTEM 權限、COM API 全部綁在一起。 本篇提供的整合策略已驗證多年,是目前企業環境成功率最高、最穩定、最完整的「WSUS 客戶端強制修復方案」。

    下一篇將延伸介紹: 《WSUS + PowerShell GUI 工具:自動修復、批次診斷與系統模式 COM 報到(進階版)》


    🔗 分享這篇 LINE Facebook X

    沒有留言:

    字級