仕事柄、VBSを使ってPC管理業務の効率化を図ることが多々ある。
その中で、ここ最近作成して便利だったスクリプトをいくつか紹介。業務効率化の手助けになれば。
製造番号(シリアル番号)を表示する
メーカー製PC限定。PCの製造番号(シリアル番号)を表示させます。
大抵のメーカーのPCで動作します。当然ながら、自作PCでは取得できません。
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 Ret = Replace(Ret,vbCr,"") Ret = Replace(Ret,vbLf,"") Ret = Replace(Ret,vbTab,"") Ret = Replace(Ret," ","") Ret = Trim(Ret) msgbox Ret
他PCの製造番号を取得
上記の応用版。ネットワークで接続された、他PCの製造番号を取得します。
ただし、取得するPCのAdminのパスワードを知っていることが前提となります。
' 取得するPCのホスト名、Admin ID、パスワード pComp = "hogePC" pAdmin = "Administrator" pPw = "password" Set Locator = WScript.CreateObject("WbemScripting.SWbemLocator") Set Service = Locator.ConnectServer(pComp, ,pAdmin,pPw) 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 Ret = Replace(Ret,vbCr,"") Ret = Replace(Ret,vbLf,"") Ret = Replace(Ret,vbTab,"") Ret = Replace(Ret," ","") Ret = Trim(Ret) msgbox Ret
特定のユーザ名(ログインID)を変更
指定したユーザ名(ログインID)を変更します。当然、指定したIDがそのPCに存在することが前提となります。
ここでは、例としてAdministratorのIDを変更します。
' 変更するID(例としてAdministrator) pId = "Administrator" Set objDomain = GetObject("WinNT://" & strComputerName) On Error Resume Next Set objUser = GetObject("WinNT://" & strComputerName & "/" & pId) If Err.Number <> 0 Then Msgbox pId & "の名前は、すでに変更されています。" WScript.Quit End If On Error Goto 0 '************************ ' ユーザ名変更 '************************ strNewName = Inputbox("新IDを入力して下さい", "入力", pId) strNewName = Trim(strNewName) If strNewName = "" Or Ucase(strNewName) = pId Then MsgBox "入力無し、もしくはキャンセルされました。終了します。" WScript.Quit End If ' *** 変更実行 *** On Error Resume Next objDomain.MoveHere objUser.AdsPath, strNewName If Err.Number <> 0 Then Msgbox "ログインIDの変更に失敗しました。手動で変更してください。" WScript.Quit End If On Error Goto 0 If flgAuto = False Then MsgBox "変更完了しました。" End If
Windowsファイアウォールの無効化
社内などのイントラ内管理のPCにおいて、Windowsファイアウォールが有効になっていると色々と不便なことが起こる場合が多い(集中管理ソフトでの操作ができない、ファイル共有が出来ない、PINGでの死活が監視できない)。
ここでは、「社内PCはWindowsファイアウォールを無効化する」というポリシーが制定されたと仮定して、簡単に無効化するスクリプトを紹介。
(Microsoftのサイトより引用)
'Create the firewall manager object. Set objFwMgr = CreateObject("HNetCfg.FwMgr") If Err <> 0 Then WScript.Echo "Windowsファイアウォールにアクセスできません" WScript.Quit End If 'Get the current profile for the local firewall policy. Set objProfile = objFwMgr.LocalPolicy.CurrentProfile 'Is firewall enabled? If objProfile.FirewallEnabled = True Then Msgbox "Windowsファイアウォールは、現在有効です" 'Disable it. objProfile.FirewallEnabled = False Msgbox "Windowsファイアウォールは無効化されました" Else Msgbox "Windowsファイアウォールはすでに無効になっています" End If
MACアドレス取得
NICのMACアドレスを取得して、表示する。複数NICがある場合も全て表示される。
(これまたネットで検索して、たぶんMicrosoftのサイトより引用)
Set wmiLocator = Wscript.CreateObject("WbemScripting.SWbemLocator") Set wmiService = wmiLocator.ConnectServer Set nicInstance = wmiService.ExecQuery _ ("Select * From Win32_NetworkAdapterConfiguration Where IPEnabled = True") For Each nicEnumerator In nicInstance outList = outList + vbNewLine + nicEnumerator.Caption + " ---- " + nicEnumerator.MACAddress Next WScript.Echo outList
とりあえず、最近作成して便利だったのはこの辺かな。参考になれば幸いです。
Windowsサーバー Hacks ―管理者必携のテクニック & WSHスクリプト 100選
- 作者: Mitch Tulloch,高橋基信,占部優希
- 出版社/メーカー: オライリージャパン
- 発売日: 2005/05/26
- メディア: 単行本(ソフトカバー)
- 購入: 2人 クリック: 35回
- この商品を含むブログ (23件) を見る