WSUS サーバー資料の採取手順について

何らかの理由により、 CMCollector による資料採取が出来ない場合において、WSUS サーバーの資料を採取いただく際の手順を以下にご案内します。
なお、お問い合わせの内容によっては、追加の資料採取手順を担当者よりご案内することもございますので、ご了承くださいますようお願い致します。

採取いただきたい内容

  1. WSUS サーバー ログ
  2. WID ログ
  3. IIS 構成情報
  4. IIS ログ
  5. イベント ログ
  6. システム情報
  7. レジストリ情報
  8. グループ ポリシー情報
  9. PowerShell コマンドの出力結果

1. WSUS サーバー ログ

WSUS サーバーの下記フォルダーを圧縮の上、取得をお願いします。

1
%programfiles%\Update Services\LogFiles

2. WID ログ

WSUS のデータベースに Windows Internal Database (WID) を使用している場合、下記フォルダーを圧縮の上、取得をお願いします。

1
%windir%\WID\Log

WID か SQL Server か、どちらのデータベースを現在利用しているかにつきましては、WSUS サーバーの以下のレジストリから判断できます。
“SqlServerName” の値が %computername%\MICROSOFT##SSEE もしくは MICROSOFT##WID となっていれば、WID です。それ以外は SQL Server です。

1
2
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Update Services\Server\Setup]
"SqlServerName"

3. IIS 構成情報

IIS の構成情報は、通常 %SystemRoot%\system32\inetsrv\config\applicationHost.config、およびアプリケーションの物理ディレクトリ (Program Files\Update Services\WebServices) 配下にある web.config に保存されています。
WSUS サーバーの以下のフォルダーに存在する applicationHost.config および web.config をご提供ください。

1
2
3
4
5
6
7
8
- %SystemRoot%\system32\inetsrv\config\applicationHost.config
- %programfiles%\Update Services\WebServices\ApiRemoting30\web.config
- %programfiles%\Update Services\WebServices\ClientWebService\web.config
- %programfiles%\Update Services\WebServices\DssAuthWebService\web.config
- %programfiles%\Update Services\WebServices\ReportingWebService\web.config
- %programfiles%\Update Services\WebServices\ServerSyncWebService\web.config
- %programfiles%\Update Services\WebServices\SimpleAuthWebService\web.config
- <WsusContent フォルダー>\web.config (存在する場合)

4. IIS ログ

WSUS サーバーにて、下記のパスに保存されている IIS のログ ファイルの採取をお願いします。
あまりにも容量が大きくなるようであれば、事象発生日前後含む 3 日分程度で結構です。

1
2
- %Windir%\System32\LogFiles\HTTPERR 配下のファイル
- %SystemDrive%\inetpub\LogFiles\W3SVCn または %Windir%\System32\LogFiles\W3SVCn 配下のファイル (n = サイトID: 既定のWebサイトは1です)

※ IIS ログは既定で有効となっておりませんため、ファイルが存在しない場合は不要です。
有効化する場合は、以下の手順を実施した後、事象を再現させた上でご採取いただけますと幸いでございます。

  1. サーバー マネージャーを起動します。
  2. 「役割と機能の追加」をクリックします。
  3. 「次へ」をクリックします。
  4. 「役割ベースまたは機能ベースのインストール」を選択したまま、「次へ」をクリックします。
  5. 「サーバー プールからサーバーを選択」を選択したまま、「次へ」をクリックします。
  6. 以下を選択し、「次へ」をクリックします。

[Web サーバー (IIS)] - [Web サーバー] - [状態と診断] - [HTTP ログ]

  1. 「次へ」をクリックします。
  2. 「インストール」をクリックします。
  3. インストールが完了しましたら、「閉じる」をクリックします。

5. イベント ログ

イベント ビューアーよりアプリケーション、システム、セキュリティのログを保存してください。
イベント ログ形式とテキスト形式での保存をお願いします。

6. システム情報

以下の手順で出力した txt ファイルの取得をお願いします。

  1. [ファイル名を指定して実行] より、”msinfo32” を開きます。
  2. [システム情報] 画面が開きますので、メニュー バーより、[ファイル] - [エクスポート] を選択します。
  3. 任意の名前を入力し、txt 形式で保存します。

7. レジストリ情報

以下のレジストリ キーをエクスポートしたファイルの取得をお願いします。

1
2
- HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Update Services
- HKEY_LOCAL_MACHINE\SOFTWARE\Policies

レジストリのエクスポート手順は以下をご参照ください。
https://jpmem.github.io/memlog/general/registry/export-reg.html

8. グループ ポリシー情報

以下の手順で出力した htm ファイルの取得をお願いします。

  1. 管理者権限でコマンド プロンプトを起動し、任意のフォルダーに移動のうえ下記コマンドを実行します。
    1
    gpresult /H gpresult.htm
  2. 移動先フォルダーに出力された gpresult.htm を取得します。

9. PowerShell コマンドの出力結果

WSUS サーバー上で「管理者として実行」にて起動した PowerShell コンソールで以下のコマンドを実行して出力された以下のファイルを採取してください。

  • WSUS_ServerInfo.txt
  • WSUS_SyncInfo.txt
  • WSUS_ClientInfo.txt

出力先のパスは C:\temp ですが、変更されたい場合は、1 行目を任意のパスに変更の上、ファイルを採取してください。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
$outWSUSPath = "C:\temp"
$wsus = Get-WsusServer

$traceFile = Join-Path $outWSUSPath -ChildPath "WSUS_ServerInfo.txt"

$wsus.GetStatus() | Out-File $traceFile -Append
$wsus.GetComponentsWithErrors() | Out-File $traceFile -Append
$wsus.GetDatabaseConfiguration() | Out-File $traceFile -Append
$wsusconfig = $wsus.GetConfiguration()
$wsusconfig.GetEnabledUpdateLanguages() | Out-File $traceFile -Append
$wsusconfig | Out-File $traceFile -Append

$traceFile = Join-Path $outWSUSPath -ChildPath "WSUS_SyncInfo.txt"

$wsussubscription = $wsus.GetSubscription()
$wsussubscription.GetUpdateCategories() | Out-File $traceFile -Append
$wsussubscription.GetUpdateClassifications() | Out-File $traceFile -Append
$wsussubscription.GetLastSynchronizationInfo() | Out-File $traceFile -Append
$wsussubscription.GetLastSynchronizationInfo().UpdateErrors | Out-File $traceFile -Append
$eventHistory = $wsussubscription.GetEventHistory([DateTime]::Now.AddDays(-7), [DateTime]::Now)

if ($eventHistory.Count -lt 1)
{
" None." | Out-File $traceFile -Append
} else {
foreach($event in $eventHistory)
{
" $($event.CreationDate) - $($event.Message)" | Out-File $traceFile -Append
}
}

$traceFile = Join-Path $outWSUSPath -ChildPath "WSUS_ClientInfo.txt"
$computerTargetGroups = $wsus.GetComputerTargetGroups()
$computerTargetGroups | Out-File $traceFile -Append
if ($computerTargetGroups.Count -lt 1)
{
" None." | Out-File $traceFile -Append
} else {
foreach($targetGroup in $computerTargetGroups)
{
$targets = $targetGroup.GetComputerTargets()
" ----" | Out-File $traceFile -Append
" Target Group: $($targetGroup.Name)" | Out-File $traceFile -Append
" Number of computers in group: $($targets.Count)" | Out-File $traceFile -Append

foreach($computer in $targets)
{
$temp = " Computer: $($computer.FullDomainName)`t"
$temp += " LastStatus: $($computer.LastReportedStatusTime)"
$temp += " LastSync: $($computer.LastSyncTime)"
$temp += " (OS Version $($computer.OSInfo.Version.Major).$($computer.OSInfo.Version.Minor) SP$($computer.OSInfo.Version.ServicePackMajor)"
$temp += " Build $($computer.OSInfo.Version.Build))"
$temp | Out-File $traceFile -Append
}

"" | Out-File $traceFile -Append
}
}