Windows WSUS のためのログオンスクリプト
MicrosoftのWindows 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するようにしておく。