「なんでWSUSがまた止まってるんだ…」
月曜の朝、出社したら上司から呼び出し。
「先週の更新プログラムが配信されてないぞ!」
確認すると、WSUSの同期が3週間前から失敗していた…
気づかなかった自分が悪いのか、それともWSUSの仕様が悪いのか…
こんな経験、ありませんか?
【この記事で分かること】
- ✅ WSUS運用で誰もがハマる5つの「あるある」ミス
- ✅ 各ミスの具体的な対策(コマンド・手順付き)
- ✅ トラブルを未然に防ぐチェックリスト
- ✅ 自動化スクリプト(PowerShell)のサンプル
- ✅ 上司への報告テンプレート
読了時間:約12分 | 筆者:WSUS運用歴7年、過去30社のWSUS移行を支援
はじめに:WSUS運用は「誰もがミスする」前提で設計すべき
Windows Server Update Services(WSUS)は、社内クライアントの更新管理において非常に有効なツールです。
しかし、運用の落とし穴が多すぎるのも事実。
Microsoftも公式ドキュメント(WSUS Best Practices)で注意喚起していますが、それでも現場では同じミスが繰り返されています。
正直に言います:
私自身、WSUS運用を始めた当初、この記事で紹介する5つのミスを全部やらかしました。
特にひどかったのは、3ヶ月間も同期が止まっていたのに気づかなかったこと。
セキュリティ監査で指摘されて、始末書を書く羽目に…
この記事では、そんな痛い経験から学んだ「あるある」ミスとその対策を、現場で今すぐ使える形で紹介します。
WSUS運用ミスあるある5選
1. 同期スケジュールがうまく動いていない【最頻出】
症状:
- 「最後の同期」が数週間前で止まっている
- クライアントに最新の更新プログラムが配信されない
- イベントビューアーにエラーログが大量に残っている
原因:
- タスクスケジューラの設定ミス(権限不足、パス間違いなど)
- IIS Application Poolの停止
- ディスク容量不足
- プロキシ設定の変更
対策:
【即座に確認すべきポイント】
“`powershell
# 1. 最後の同期日時を確認
Get-WsusServer | Get-WsusSubscription | Select LastSynchronizationTime
# 2. IIS Application Poolの状態確認
Get-WebAppPoolState -Name “WsusPool”
# 3. ディスク容量確認(WSUSデータベースドライブ)
Get-PSDrive C | Select Used,Free
# 4. 手動同期を実行してエラー確認
(Get-WsusServer).GetSubscription().StartSynchronization()
“`
【自動監視スクリプト】
毎日自動でチェックして、異常があればメール通知するスクリプトを作成しましょう:
“`powershell
# WSUS同期監視スクリプト(毎日実行)
$wsus = Get-WsusServer
$sub = $wsus.GetSubscription()
$lastSync = $sub.LastSynchronizationTime
# 24時間以上同期されていなければアラート
$threshold = (Get-Date).AddHours(-24)
if ($lastSync -lt $threshold) {
Send-MailMessage `
-To “admin@company.com” `
-From “wsus-alert@company.com” `
-Subject “【警告】WSUS同期が24時間以上停止” `
-Body “最終同期: $lastSync” `
-SmtpServer “smtp.company.com”
}
“`
【私の失敗談】
❌ やらかした:3ヶ月間、同期が止まっていたのに気づかず
タスクスケジューラの実行アカウントが「パスワード期限切れ」で動いていませんでした。
セキュリティ監査で指摘され、全社にセキュリティパッチが3ヶ月未適用だったことが発覚…
教訓:監視スクリプトは必須。手動確認に頼ってはダメ。
2. 承認し忘れによる更新未配信【初心者が必ずハマる】
症状:
- 同期は成功しているのに、クライアントに更新が来ない
- ユーザーから「Windows Updateが何もない」と言われる
原因:
WSUSは同期されただけでは配信されません。
管理者が手動で「承認」しないと、クライアントには届きません。
これ、WSUSの仕様として分かりにくすぎると思いませんか?
私も最初、「同期したら自動で配信されるもの」だと勘違いしていました。
対策:
【自動承認ルールの設定】
- WSUSコンソールを開く
- 「オプション」→「自動承認」
- 「新しいルール」をクリック
- 以下を設定:
- 更新の種類:「重要な更新」「セキュリティ更新プログラム」
- コンピューターグループ:「すべてのコンピューター」(またはテストグループ)
- 承認:「インストール」
【PowerShellで一括承認】
“`powershell
# 過去30日の未承認の「重要な更新」を一括承認
$wsus = Get-WsusServer
$group = $wsus.GetComputerTargetGroups() | Where {$_.Name -eq “All Computers”}
$wsus.GetUpdates() |
Where {$_.UpdateClassificationTitle -match “重要|セキュリティ” -and
$_.IsApproved -eq $false -and
$_.CreationDate -gt (Get-Date).AddDays(-30)} |
ForEach {
$_.Approve(“Install”, $group)
Write-Host “承認: $($_.Title)”
}
“`
注意:本番環境でいきなり全承認は危険です。
必ずテストグループで検証してから、本番グループに展開してください。
3. ディスク容量不足でデータベースが壊れる【最悪のケース】
症状:
- WSUSコンソールが開けない
- 「データベース接続エラー」が頻発
- イベントログに「SQL Server エラー: ディスク容量不足」
原因:
WSUSのデータベース(SUSDB)は、放置すると数十GB〜100GB以上に肥大化します。
特に:
- 不要な更新プログラムを削除していない
- 古いコンピューターが登録されたまま
- ログが溜まり続けている
対策:
【定期メンテナンス(月1回実施)】
“`powershell
# 1. サーバークリーンアップウィザードの実行
# WSUSコンソール → オプション → サーバークリーンアップウィザード
# 全項目にチェックを入れて実行
# 2. PowerShellで実行する場合
Invoke-WsusServerCleanup -CleanupObsoleteUpdates -CleanupUnneededContentFiles `
-CompressUpdates -DeclineExpiredUpdates `
-DeclineSupersededUpdates
# 3. データベースの再インデックス(パフォーマンス改善)
sqlcmd -S localhost -E -d SUSDB -Q ”
EXEC sp_MSforeachtable ‘ALTER INDEX ALL ON ? REBUILD’
”
“`
【ディスク容量監視】
“`powershell
# WSUSドライブの空き容量が20GB以下ならアラート
$drive = Get-PSDrive C
$freeGB = [math]::Round($drive.Free / 1GB, 2)
if ($freeGB -lt 20) {
Send-MailMessage `
-To “admin@company.com” `
-Subject “【緊急】WSUSサーバーのディスク容量不足” `
-Body “空き容量: $freeGB GB” `
-SmtpServer “smtp.company.com”
}
“`
💡 こんな運用、本当に続けられますか?
WSUS運用は「やることリスト」が多すぎて、本来のインフラ業務に集中できない…
そんな悩み、ありませんか?
最近は、Intune(Microsoft Endpoint Manager)への移行を検討する企業が増えています。
クラウドベースなので、こういった面倒な運用から解放されます。
4. クライアント側のWSUS設定ミス【意外と多い】
症状:
- 一部のPCだけ更新が来ない
- 「このデバイスは最新の状態です」と表示されるが、実際は古い
原因:
- グループポリシーが適用されていない
- WSUSサーバーのURL設定ミス
- ネットワーク接続の問題(プロキシ、ファイアウォール)
対策:
【クライアント側の診断コマンド】
“`cmd
REM 1. WSUS設定の確認
reg query “HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate” /s
REM 2. WSUSサーバーへの接続確認
wuauclt /detectnow /reportnow
REM 3. Windows Updateのリセット(最終手段)
net stop wuauserv
rd /s /q C:\Windows\SoftwareDistribution
net start wuauserv
wuauclt /resetauthorization /detectnow
“`
【グループポリシーの確認】
- コンピューターの構成 → ポリシー → 管理用テンプレート → Windowsコンポーネント → Windows Update
- 「イントラネットのMicrosoft更新サービスの場所を指定する」が有効になっているか確認
- WSUSサーバーのURLが正しいか確認(http://wsus-server:8530)
5. 更新プログラムのテストをせずに本番展開【危険】
症状:
- 更新プログラム適用後、業務アプリが動かなくなった
- 一部のPCで起動しなくなった
- ネットワークドライブに接続できなくなった
原因:
Microsoftの更新プログラムは、稀に不具合を含むことがあります。
有名な例:
- KB5000802(2021年3月):印刷不具合
- KB5001330(2021年4月):ブルースクリーン頻発
- KB5012170(2022年5月):VPN接続不可
対策:
【段階的展開の設定】
- テストグループを作成(IT部門のPC 5〜10台)
- 火曜(Patch Tuesday翌日)にテストグループへ配信
- 1週間テスト運用(不具合がないか確認)
- 問題なければ本番グループへ展開(翌週月曜)
【不具合が見つかった場合の対処】
“`powershell
# 特定の更新プログラムを拒否
$wsus = Get-WsusServer
$update = $wsus.GetUpdates() | Where {$_.KnowledgebaseArticles -contains “KB5000802”}
$update.Decline()
“`
トラブルを未然に防ぐチェックリスト
以下のチェックリストを週1回実行することをおすすめします:
| 項目 | 確認方法 | 異常時の対処 |
|---|---|---|
| 同期状態 | 最終同期が24時間以内か | 手動同期 → エラーログ確認 |
| ディスク容量 | 空き容量が20GB以上か | サーバークリーンアップ実行 |
| IIS状態 | WsusPool が Started か | Application Pool再起動 |
| 未承認の更新 | 30日以内の未承認があるか | 承認 or 拒否の判断 |
| クライアント接続 | 全PCの90%以上が7日以内に接続しているか | 未接続PCの原因調査 |
【自動チェックスクリプト(完全版)】
このスクリプトをタスクスケジューラで毎週月曜9時に実行してください:
“`powershell
# WSUS週次チェックスクリプト
$results = @()
# 1. 同期チェック
$wsus = Get-WsusServer
$lastSync = $wsus.GetSubscription().LastSynchronizationTime
$syncOK = $lastSync -gt (Get-Date).AddHours(-24)
$results += “同期: $(if($syncOK){‘OK’}else{‘NG – 最終同期: $lastSync’})”
# 2. ディスク容量チェック
$freeGB = [math]::Round((Get-PSDrive C).Free / 1GB, 2)
$diskOK = $freeGB -gt 20
$results += “ディスク: $(if($diskOK){‘OK’}else{‘NG – 空き: $freeGB GB’})”
# 3. IISチェック
$poolState = (Get-WebAppPoolState -Name “WsusPool”).Value
$iisOK = $poolState -eq “Started”
$results += “IIS: $(if($iisOK){‘OK’}else{‘NG – State: $poolState’})”
# 4. 未承認チェック
$unapproved = $wsus.GetUpdates() | Where {
$_.IsApproved -eq $false -and
$_.CreationDate -gt (Get-Date).AddDays(-30)
}
$results += “未承認: $($unapproved.Count)件”
# 5. レポート送信
$body = $results -join “`n”
Send-MailMessage `
-To “admin@company.com” `
-Subject “[WSUS] 週次チェック結果” `
-Body $body `
-SmtpServer “smtp.company.com”
“`
上司への報告テンプレート
トラブル発生時、上司への報告は避けられません。
以下のテンプレートを使えば、簡潔かつ必要十分な報告ができます:
“`
件名:【報告】WSUSトラブル対応完了
◯◯課長
お疲れ様です。△△です。
本日発生したWSUSトラブルについて、対応が完了しましたので報告いたします。
【発生事象】
– 発生日時:2026年3月16日 10:00頃
– 症状:クライアントPCに更新プログラムが配信されない
– 影響範囲:全社PC(約300台)
【原因】
WSUSサーバーの同期が3週間前から停止していた
(タスクスケジューラの実行アカウントのパスワード期限切れ)
【対応内容】
1. タスクスケジューラの実行アカウントを更新
2. 手動で同期を実行(成功確認)
3. 未承認の更新プログラムを承認
4. テストPCで動作確認
【対応完了時刻】
2026年3月16日 14:30
【再発防止策】
– 監視スクリプトを導入(同期異常を自動検知)
– タスクスケジューラの実行アカウントをパスワード無期限に変更
– 週次チェックリストの運用開始
【今後のスケジュール】
– 3/17(火):テストグループへ更新配信
– 3/24(火):本番グループへ更新配信
以上、よろしくお願いいたします。
“`
まとめ:WSUS運用は「仕組み化」が全て
WSUS運用でよくある5つのミス:
- ✅ 同期スケジュールの停止
- ✅ 承認し忘れ
- ✅ ディスク容量不足
- ✅ クライアント設定ミス
- ✅ テストせずに本番展開
重要なポイント:
これらのミスは、「気をつける」だけでは防げません。
必要なのは:
- ✅ 監視スクリプトの導入(異常を自動検知)
- ✅ 週次チェックリストの運用
- ✅ 段階的展開の仕組み化
これらを「仕組み」として導入すれば、トラブルは激減します。
関連記事
✅ こんな運用から解放されたい方へ
WSUS運用は、正直言って「面倒」「属人化しやすい」「評価されにくい」業務です。
もし、あなたが:
- ✅ 深夜・休日対応が多い
- ✅ トラブル対応に追われて本来の業務ができない
- ✅ 正当に評価されていないと感じる
なら、一度キャリアを見直すタイミングかもしれません。
レバテックキャリアなら、インフラエンジニアの転職実績が豊富:
- ✅ IT専門のキャリアアドバイザーが担当
- ✅ 年収交渉もお任せ(平均50万円アップ)
- ✅ 完全無料(企業側が費用負担)
※無理に転職を勧めることはありません。まずは市場価値の確認だけでもOKです。
この記事を書いた人:
インフラエンジニア歴10年。大手SIerでWSUS運用を7年間担当し、過去30社のWSUS導入・移行を支援。
現在は、Intune導入コンサルティングを行いながら、同じ悩みを持つインフラエンジニアをサポート中。
この記事を書いた人:
IT業界で10年以上のキャリアを持つエンジニア。インフラ運用、開発、キャリア支援の経験をもとに、現場で本当に役立つ情報を発信中。
