パスワードを忘れた? アカウント作成
466006 journal

patagonの日記: [コンピュータ,ネット]IPアドレス情報を取得する(VBS)

日記 by patagon

以下のように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")
(略)
以下、実行結果の文字列を取得するコーディング

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

人生の大半の問題はスルー力で解決する -- スルー力研究専門家

読み込み中...