patagonの日記: [コンピュータ,ネット]IPアドレス情報を取得する(VBS)
以下のようにWScript.NetworkでComputerName,UserDomain,UserName情報を取得できる。
Set objNetWork = WScript.CreateObject("WScript.Network")
'strUserDomain = objNetWork.UserDomain
'strComputerName = objNetWork.ComputerName
'strAccountInfo = objNetWork.UserName
WScript.echo objNetWork.UserDomain
Wscript.Echo objNetWork.ComputerName
Wscript.Echo objNetWork.UserName
しかしIPアドレス情報は取得できない。(IPアドレス情報を知っているからコンピュータに接続して、調査できるんだが、)あえて画面に表示したり、ログに出力する場合にIPアドレスを取得したいことがある。Hey, Scripting Guy!「IP アドレスを取得しようとするとエラーが発生するのですが、何が原因ですか」が参考になる。Windows Management Instrumentation(WMI)を使い、Win32_NetworkAdapterConfigurationから情報を取得する。WMIといっても、情報の変更を行わず、情報の参照・取得だけなら管理者権限は必要ないだろう。
' 参考 Hey, Scripting Guy!
' http://www.microsoft.com/japan/technet/scriptcenter/resources/qanda/aug04/hey0825.mspx
' 複数のネットワークアダプタ,複数のIPアドレスがある場合は注意が必要
strComputer = "."
Set objWMIService = GetObject _
("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * From Win32_NetworkAdapterConfiguration " & _
"Where IPEnabled = True")
For Each objItem in colItems
' Wscript.Echo "Caption: " & objItem.Caption
For Each objAddress in objItem.IPAddress
' Wscript.Echo "IP Address: " & objAddress
strIPAddress = objAddress
Next
Next
Wscript.Echo strIPAddress
@IT:運用 Windows管理者のためのWindows Script Host入門 第5回 WshShellオブジェクトの詳細(1)で「ipconfig.exe」を使う方法が紹介されているが、これだと実行時に一瞬だがコマンドプロンプトが開くのでかっこ悪い。実行者によっては何だろう?っていぶかしがる人もいるだろう。
Set objShell = WScript.CreateObject("WScript.Shell")
Set objExec = objShell.Exec("ipconfig.exe")
(略)
以下、実行結果の文字列を取得するコーディング
[コンピュータ,ネット]IPアドレス情報を取得する(VBS) More ログイン