WMIでDell製PCの保守ステータスを確認する@VBS
DELLで購入したPCについて問い合わせを行う場合、サービスタグっていうタグナンバーを使ってここで問い合わせを行います。
端末毎に微妙にサポート連絡先が違ってたりするんだけど、それっていちいち調べるのめんどくさいじゃないですか。なんでスクリプトにして自動問い合わせ出来るようにしてみました。
しょぼいスクリプトなんですが、非プログラマが作成するプログラム・・・もとい僕が作るプログラムなんてこんなもんです。ソースもGoogleで検索したサンプルコードを切り貼りしております。
動作的には
1.BIOSからサービスタグを取得
2.サービスタグ番号をDellサポートページにGET
3.帰ってきたHTMLから必要な値を取得して表示
こんな感じです。問い合わせにはインターネットに接続された環境が必要です。コードをメモ帳か何かで保存してファイル名を
hogehoge.vbs
とか適当な名前を付けてダブルクリックするだけです。当然ながらDELL製PCでしか動作しない・・・というか意味無いです。
別に新しくもなんともない訳ですが、あると何気に便利なんで貼っておきます。端末が複数ある場合にはサービスタグだけ一覧にしておいてそれを管理サーバなりから一括で問い合わせてCSVファイルか何かにするほうが再利用出来て良いと思います。
‘———————————–
‘BIOS SerialNumberの取得
‘WMIを使ってBIOSからサービスタグナンバーを取得します。
‘———————————–
Option ExplicitDim QfeSet ’クエリ格納先
Dim Qfe ’バラしたリスト
Dim Locator
Dim Service
Dim RetSet Locator = WScript.CreateObject("WbemScripting.SWbemLocator")
Set Service = Locator.ConnectServer
Set QfeSet = Service.ExecQuery("Select * From Win32_BIOS")For Each Qfe In QfeSet
Ret = Qfe.SerialNumber & vbCrLf
NextSet QfeSet = Nothing
Set Qfe = Nothing
Set Service = Nothing
Set Locator = Nothing‘———————————–
‘DELLから情報取得
‘(例)
‘http://support2.jp.dell.com/jp/jp/tech/phone/index.asp?st=hogehoge
‘———————————–
Dim IEObj
Dim StrHTMLSet IEObj = CreateObject("InternetExplorer.Application") ’オブジェクトの作成
With IEObj ’With XXXXでEnd WithまでXXXXを省略できるようになります。
.Visible = False
’ .Visible = True
.Navigate "http://support2.jp.dell.com/jp/jp/tech/phone/index.asp?st=" & Ret ’URLWhile .Busy Or .ReadyState <> 4 ’画面が表示しきるまで待ちます。
Wend
StrHTML = .document.body.innerHTML ’この値だけ持ち越し
End WithSet IEObj = Nothing
‘———————————–
‘HTMLコードから情報の抜き出し
‘———————————–
Dim StrBuffStrBuff = TrimHTMLTag(StrHTML)
Dim StrCompText
Dim StrLineText
Dim Model ’機種名
Dim ExpressServiceCode ’エクスプレスサービスコード
Dim ServiceTagNumber ’サービスタグナンバー
Dim Shippingdate ’システム出荷日
Dim SupportName ’サポート名
Dim PhoneNumber ’テクニカルサポート電話番号
Dim cflag‘Split(strVal, strDiv, lngCnt, lngCmp)
StrCompText = Split(StrBuff,VBCrLf)
‘msgbox StrCompText(0)‘———————————–
‘1 =機種名
‘2 =エクスプレスサービスコード
‘3 =サービスタグナンバー
‘4 =システム出荷日
‘5=サポート名
‘6=テクニカルサポート電話番号
‘———————————–
cflag = 0for each StrLineText in StrCompText
Select Case cflag
Case 1
Model = StrLineText
cflag = 0
Case 2
ExpressServiceCode = StrLineText
cflag = 0
Case 3
ServiceTagNumber = StrLineText
cflag = 0
Case 4
Shippingdate = StrLineText
cflag = 0
Case 5
SupportName = StrLineText
cflag = 0
Case 6
PhoneNumber = StrLineText
cflag = 0
End Selectif StrLineText = "機種名" Then
cflag = 1
end ifif StrLineText = "エクスプレスサービスコード" Then
cflag = 2
end ifif StrLineText = "サービスタグナンバー" Then
cflag = 3
end ifif StrLineText = "システム出荷日" Then
cflag = 4
end ifif StrLineText = "サポート名" Then
cflag = 5
end ifif StrLineText = "テクニカルサポート電話番号" Then
cflag = 6
end ifnext
msgbox "機種名:" & Model & VBCrLf &_
"サービスタグナンバー:" & ServiceTagNumber & VBCrLf &_
"エクスプレスサービスコード:" & ExpressServiceCode & VBCrLf &_
"システム出荷日:" & Shippingdate & VBCrLf &_
"テクニカルサポート電話番号:" & PhoneNumber & VBCrLf &_
"サポート名:" & SupportName‘———————————–
‘Function
‘———————————–Function TrimHTMLTag(source)
Dim Re
Dim objREG
Dim StrBuff
Set objREG = New RegExp
objREG.IgnoreCase = True ’大文字小文字区別無
objREG.Global = True ’一致するものすべて
Set Re = CreateObject("VBScript.RegExp") ’最短一致版
objREG.Pattern = "<.*?>"
TrimHTMLTag = (objREG.Replace(source, ""))
End Function
改めてWMIってWindowsOSを操作する分には便利だなー。なんて思いました。とりあえず本職プログラマー若干2名に聞きながら作ったんですが、メインに作ったのが僕なのでダサいですが何かのお役に立てれば幸いです。
Popularity: 4%
トラックバック URI : http://pnpk.net/cms/archives/301/trackback/
【関連記事】