DELLで購入したPCについて問い合わせを行う場合、サービスタグっていうタグナンバーを使ってここで問い合わせを行います。
端末毎に微妙にサポート連絡先が違ってたりするんだけど、それっていちいち調べるのめんどくさいじゃないですか。なんでスクリプトにして自動問い合わせ出来るようにしてみました。
しょぼいスクリプトなんですが、非プログラマが作成するプログラム・・・もとい僕が作るプログラムなんてこんなもんです。ソースもGoogleで検索したサンプルコードを切り貼りしております。
動作的には
1.BIOSからサービスタグを取得
2.サービスタグ番号をDellサポートページにGET
3.帰ってきたHTMLから必要な値を取得して表示
こんな感じです。問い合わせにはインターネットに接続された環境が必要です。コードをメモ帳か何かで保存してファイル名を”hogehoge.vbs”とか適当な名前を付けてダブルクリックするだけです。当然ながらDELL製PCでしか動作しない・・・というか意味無いです。
別に新しくもなんともない訳ですが、あると何気に便利なんで貼っておきます。端末が複数ある場合にはサービスタグだけ一覧にしておいてそれを管理サーバなりから一括で問い合わせてCSVファイルか何かにするほうが再利用出来て良いと思います。
'--------------------------------------------------- 'BIOS SerialNumberの取得 'WMIを使ってBIOSからサービスタグナンバーを取得します。 '--------------------------------------------------- Option Explicit Dim QfeSet 'クエリ格納先 Dim Qfe 'バラしたリスト Dim Locator Dim Service Dim Ret Set 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 Next Set 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 StrHTML Set 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 'URL While .Busy Or .ReadyState <> 4 '画面が表示しきるまで待ちます。 Wend StrHTML = .document.body.innerHTML 'この値だけ持ち越し End With Set IEObj = Nothing '--------------------------------------------------- 'HTMLコードから情報の抜き出し '--------------------------------------------------- Dim StrBuff StrBuff = 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 = 0 for 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 Select if StrLineText = "機種名" Then cflag = 1 end if if StrLineText = "エクスプレスサービスコード" Then cflag = 2 end if if StrLineText = "サービスタグナンバー" Then cflag = 3 end if if StrLineText = "システム出荷日" Then cflag = 4 end if if StrLineText = "サポート名" Then cflag = 5 end if if StrLineText = "テクニカルサポート電話番号" Then cflag = 6 end if next msgbox "機種名:" & Model & VBCrLf &_ "サービスタグナンバー:" & ServiceTagNumber & VBCrLf &_ "エクスプレスサービスコード:" & ExpressServiceCode & VBCrLf &_ "システム出荷日:" & Shippingdate & VBCrLf &_ "テクニカルサポート電話番号:" & PhoneNumber & VBCrLf &_ "サポート名:" & SupportName 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名に聞きながら作ったんですが、メインに作ったのが僕なのでダサいですが何かのお役に立てれば幸いです。