Categories: WSUS

WSUSの運用管理ミスあるある5選とその対策

「なんで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. 同期スケジュールがうまく動いていない【最頻出】

症状:

  • 「最後の同期」が数週間前で止まっている
  • クライアントに最新の更新プログラムが配信されない
  • イベントビューアーにエラーログが大量に残っている

原因:

  1. タスクスケジューラの設定ミス(権限不足、パス間違いなど)
  2. IIS Application Poolの停止
  3. ディスク容量不足
  4. プロキシ設定の変更

対策:

【即座に確認すべきポイント】

“`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の仕様として分かりにくすぎると思いませんか?
私も最初、「同期したら自動で配信されるもの」だと勘違いしていました。

対策:

【自動承認ルールの設定】

  1. WSUSコンソールを開く
  2. 「オプション」→「自動承認」
  3. 「新しいルール」をクリック
  4. 以下を設定:
    • 更新の種類:「重要な更新」「セキュリティ更新プログラム」
    • コンピューターグループ:「すべてのコンピューター」(またはテストグループ)
    • 承認:「インストール」

【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)への移行を検討する企業が増えています。
クラウドベースなので、こういった面倒な運用から解放されます。

→ WSUSからIntuneへの移行ガイドを読む

4. クライアント側のWSUS設定ミス【意外と多い】

症状:

  • 一部のPCだけ更新が来ない
  • 「このデバイスは最新の状態です」と表示されるが、実際は古い

原因:

  1. グループポリシーが適用されていない
  2. WSUSサーバーのURL設定ミス
  3. ネットワーク接続の問題(プロキシ、ファイアウォール)

対策:

【クライアント側の診断コマンド】

“`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接続不可

対策:

【段階的展開の設定】

  1. テストグループを作成(IT部門のPC 5〜10台)
  2. 火曜(Patch Tuesday翌日)にテストグループへ配信
  3. 1週間テスト運用(不具合がないか確認)
  4. 問題なければ本番グループへ展開(翌週月曜)

【不具合が見つかった場合の対処】

“`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つのミス:

  1. ✅ 同期スケジュールの停止
  2. ✅ 承認し忘れ
  3. ✅ ディスク容量不足
  4. ✅ クライアント設定ミス
  5. ✅ テストせずに本番展開

重要なポイント:
これらのミスは、「気をつける」だけでは防げません

必要なのは:

  • ✅ 監視スクリプトの導入(異常を自動検知)
  • ✅ 週次チェックリストの運用
  • ✅ 段階的展開の仕組み化

これらを「仕組み」として導入すれば、トラブルは激減します。

関連記事

✅ こんな運用から解放されたい方へ

WSUS運用は、正直言って「面倒」「属人化しやすい」「評価されにくい」業務です。

もし、あなたが:

  • ✅ 深夜・休日対応が多い
  • ✅ トラブル対応に追われて本来の業務ができない
  • ✅ 正当に評価されていないと感じる

なら、一度キャリアを見直すタイミングかもしれません。

レバテックキャリアなら、インフラエンジニアの転職実績が豊富:

  • ✅ IT専門のキャリアアドバイザーが担当
  • ✅ 年収交渉もお任せ(平均50万円アップ)
  • ✅ 完全無料(企業側が費用負担)

無料でキャリア相談してみる →

※無理に転職を勧めることはありません。まずは市場価値の確認だけでもOKです。

この記事を書いた人:
インフラエンジニア歴10年。大手SIerでWSUS運用を7年間担当し、過去30社のWSUS導入・移行を支援。
現在は、Intune導入コンサルティングを行いながら、同じ悩みを持つインフラエンジニアをサポート中。

この記事を書いた人:
IT業界で10年以上のキャリアを持つエンジニア。インフラ運用、開発、キャリア支援の経験をもとに、現場で本当に役立つ情報を発信中。

青熊