Windows Server 2008 / 2008 R2 には497日問題と呼ばれる不具合があります。
詳しくはこちら
Ask the Network & AD Support Team
497 日以上連続稼動させたときに生じる問題について
困った事に、TCP/IP は何度ととなく更新されているので、blog に書かれているKBチェックでは497日問題対策済みか否かがわからない状況になっています。
497日問題対応がされているか否かは、tcpip.sysのファイルバージョンが対策版以降であるか否かで判定できます。
判定する際は、OS、SPの有無に加えてて、GDR(Windows Updateとかでのリリース)かLDR(QFEで更新)したかを判別する必要があります。
GDR (General Distribution Release)
LDR (Limited
Distribution Release)
ファイルバージョンの確認は、wmic コマンドまたは C:\Windows\System32\drivers\tcpip.sys のプロパティのファイルバージョンで確認できます。
C:\> wmic datafile where name="C:\\Windows\\System32\\drivers\\tcpip.sys" get name,size,version
ファイルバージョンのコード体系
A.A.BBBC.DEEEE
A.A : OS バージョン
6.0 → Windows Server 2008
6.1 → Windows Server 2008 R2
BBBC : ビルド番号
C : SP
0 → SPなし
1 → SP1
D : GDR/LDR区別
1 → GDR
2 → LDR
DEEEE : プライベートパート(バージョン詳細)
例) 6.1.7601.18438
Windows Server 2008 R2
SP1
GDR
ファイルバージョンを取得したら、対策済みファイルバージョン以降になっていればOKです。
OS SP | GDR/LDR | 応済みファイルバージョン |
Windows Server 2008 | GDR | 要対応 |
LDR | 6.0.6002.22643 | |
Windows Server 2008 R2 | GDR | 6.1.7600.16943 |
LDR | 6.1.7600.21122 | |
Windows Server 2008 R2 SP1 | GDR | 6.1.7601.17757 |
LDR | 6.1.7601.21893 |
Windows Server 2008 (とVista)の場合は、497日問題のGDRが提供されていないので、tcpip.sysがGDRだったらアウトですので、Ask the Network & AD Support Team の blog を見て対策してください。
Windows Server 2008 R2(と Windows 7)この問題は Windows Update で解決されます。
PowerShellであれば、猶予日数も合わせて確認ができます。
(.ps1 にしなくてもコピペで貼り付ければ OK )
|
PowerShell に詳しい方だと、「どうして Get-ItemProperty で FileVersion
調べないの?」って疑問に思われると思います。
実は、Get-ItemProperty の FileVersion
では、ファイルバージョンが正しく取得できないのです。(ProductVersion が返ってくる)
この対策のために WMI
でファイルバージョン取ているのです。
これが PowerShell の不具合なのかサポートに問い合わせたら、既知の問題ではあるがフィードバックが少なく、回避方法もあるので現状修正予定はないそうです。
回避方法は FileVersion ではなく、ファイルバージョンを構成している各値を組み合わせてファイルバージョンにするとの事でした。
つまり、こう言う事ですね。
$FileVertionData = Get-ItemProperty "C:\Windows\System32\drivers\tcpip.sys"
$FileVertion = [String]$FileVertionData.VersionInfo.FileMajorPart + "." + `
[String]$FileVertionData.VersionInfo.FileMinorPart + "." + `
[String]$FileVertionData.VersionInfo.FileBuildPart + "." + `
[String]$FileVertionData.VersionInfo.FilePrivatePart
ちなみに
[System.Diagnostics.FileVersionInfo]::GetVersionInfo("C:\Windows\System32\drivers\tcpip.sys")
こう書いてもファイルバージョンが正しく取れないので、PowerShellと言うより.NET Frameworkの問題かも?
Copyright © MURA All rights reserved.