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