Microsoftのセキュリティ情報の一覧を作成するスクリプト

ここに書かれている内容を読み取って、日付、MSxx-xxx といった番号、タイトル、影響を受ける製品、影響を受けるサービスパック、深刻度をカンマ区切りで一覧出力するスクリプトを作成してみました。
このあたりのスクリプトと組み合わせれば、適用されているサービスパック等の一覧表を作るのが楽になったりするかも知れません。

スクリプトはこんな感じ。お好きなように加工してどうぞ。

TARGET_ID = "searchControl_resultsGrid"
URL = "http://www.microsoft.com/japan/technet/security/current.aspx"
CACHE_FILE = "C:\tmp\current.aspx.htm" 

USE_CACHE = False

Const ForReading = 1
Dim r( 50 )

If USE_CACHE Then
    Set objFSO = CreateObject( "Scripting.FileSystemObject" )
    Set objText = objFSO.OpenTextFile( "C:\tmp\current.aspx.htm", ForReading )
    zHTML = ""
    Do Until objText.AtEndOfStream
        s = objText.Readline
        zHTML = zHTML & s
    Loop
Else
    Set objHTTP = CreateObject( "MSXML2.XMLHTTP" )
    Call objHTTP.Open( "GET", URL, False )
    objHTTP.Send

    zHTML = objHTTP.ResponseText
    Set objHTTP = Nothing
End If


i = InStr( zHTML, TARGET_ID )
if i = 0 Then return 
i = i + Len( TARGET_ID )

i = InStr( i, zHTML, "</tr" )
If i = 0 Then return

TableEnd = InStr( i, zHTML, "</table" )

n = 0
Do
    TrStart = InStr( i, zHTML, "<tr" )
    TrEnd = InStr( TrStart, zHTML, "</tr" )
    If ( TrStart = 0 ) Or ( TrEnd = 0 ) Then Exit Do
    If ( TrStart > TableEnd ) Or ( TrEnd > TableEnd ) Then Exit Do
    s = Mid( zHTML, TrStart, TrEnd - TrStart )
    s = Replace( s, vbCrLf, "" )
    s = Replace( s, vbCr, "" )
    s = Replace( s, vbLf, "" )

    j = 1
    k = 0
    Do
        TagEnd = InStr( j, s, ">" )
        If TagEnd = 0 Then Exit Do
        If Mid( s, TagEnd + 1, 1 ) <> "<" Then
            TagStart = InStr( TagEnd + 2, s, "<" )
            if TagStart = 0 Then TagStart = Len( s )
            r(k) = Trim( Mid( s, TagEnd + 1, TagStart - TagEnd - 1 ) )
            k = k + 1
            If k > 20 Then Exit Do
            j = TagStart
        Else
            j = TagEnd + 1
        End If
    Loop While True

    ' r(1) - 日付                          r(2) - MSxx-xxx
    ' r(4) - タイトル                      r(7) - 影響を受ける製品
    ' r(8) - 影響を受けるサービスパック    r(9) - 深刻度
    s = """" & r( 1 ) & """," & """" & r( 2 ) & """," & _
        """" & r( 4 ) & """," & """" & r( 7 ) & """," & _
        """" & r( 8 ) & """," & """" & r( 9 ) & """"
    WScript.Echo s
    n = n + 1
    i = TrEnd
Loop While True

MsgBox "Done."
WScript.Quit