masahirorの気まま記録簿

個人的な出来事や意見、生活などの記録を思うままにブログに記録

「PCの製造番号表示」他、VBSでのPC管理スクリプトあれこれ

仕事柄、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選

Windowsサーバー Hacks ―管理者必携のテクニック & WSHスクリプト 100選