Windows WSUS のためのログオンスクリプト

MicrosoftWindows Update を管理するサーバとして WSUS というものがある。

WSUSのGUIコンソールから検出されたクライアントの一覧を見ると、
何時まで経っても登録されていないものがある。

グループポリシーの問題ならば、、、
<WSUS の Windows クライアントを再登録する方法>
gpupdate/force
wuauclt/detectnow

で解消するみたいだけど、、、

クローンなどしてIDが重複しているという問題ならば、

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate

PingID
AccountDomainSid
SusClientId

を削除。

これらの値がほかのPC重複しているとWSUSのデータベースに登録されなくなる。

試しにコマンドから参照する。
reg query \\%computername%\HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate

3つのうち
SusClientId REG_SZ 4dfafdafadf-d789-4a89-a49d-dfdaf

みたいに、SusClientIdだけ存在していたが、上記の3つの値を削除するログオンスクリプトを作っておく。存在しなければエラーが返るだけで別に問題は無いので。

<ログオンスクリプト hogehoge.cmd>
REM WSUSにはクローンPCがうまく登録されない問題があるのでIDをリセット。1回きりで良い。1度実行したらログファイルを置く。ログファイルが有ればスキップ

set logpath=\\hogehoge\logs

if not exist %logpath%\WSUSreset\%computername%WSUSresetDone.log (

NET STOP WUAUSERV
reg delete \\%computername%\HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate /v SusClientId /f
reg delete \\%computername%\HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate /v PingID /f
reg delete \\%computername%\HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate /v AccountDomainSid /f
NET START WUAUSERV
set isAdmin=%errorlevel%
Wuauclt /ResetAuthorization /DetectNow

echo %isAdmin%
if "%isAdmin%" == "0" echo isAdmin:%isAdmin% WSUS reset done on %date% >>%logpath%\WSUSreset\%computername%WSUSresetDone.log

)

と書いてこれをメインのログオンスクリプトからcallするようにしておく。