Home > 2010年10月27日

2010年10月27日 Archive

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  • Comments (Close): -
  • TrackBack (Close): -

Windowsのログインユーザ名とネットワーク設定を取得する

  • Posted by: Nakunaru
  • 2010-10-27 Wed 23:04:28
  • メモ
ちょっと必要になったので調べてみた。
後で見返すためにメモ。

OS標準の機能でけで、というリクエストだったので、WSHでごにょごにょできるかなーという線で調査。


ログインユーザ名の方はGoogle先生に聞いたらすぐに出てきた。
http://jehupc.exblog.jp/13355043/

で、ネットワーク関係でIPアドレス、サブネットマスク、デフォルトゲートウェイは
以下のサイトを参考にした。
http://slashdot.jp/~patagon/journal/443008

ただ、ここのサンプルはIPアドレスだけだったので、MSDNでAPI(って呼んでいいのかな)の情報を漁る。
http://msdn.microsoft.com/en-us/library/aa394217.aspx

これによると、
IPアドレス:IPAddress
サブネットマスク:IPSubnet
デフォルトゲートウェイ:DefaultIPGateway
で、それぞれ配列で返ってくるとのこと。
なんで、


strComputer = "."
Set objWMIService = GetObject _
("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * From Win32_NetworkAdapterConfiguration " & _
"Where IPEnabled = True")



とした後で、それぞれ

Wscript.Echo "IPAddress: " & objItem.IPAddress(0)


とだそうとしたら、うちの環境だと複数のローカルエリアネットワークがあって
その中でデフォルトゲートウェイが空欄のものがあるために、配列の要素の参照でこけてしまった。

じゃぁ例外処理で逃げようってことで、結局以下のように。


strComputer = "."
Set objWMIService = GetObject _
("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * From Win32_NetworkAdapterConfiguration " & _
"Where IPEnabled = True")

' ネットワーク関連
For Each objItem in colItems
'IPアドレス
On Error Resume Next
Wscript.Echo "IPAddress: " & objItem.IPAddress(0)
If Err.Number = 13 Then
Wscript.Echo "IPAddress: none"
End If
Err.Clear
On Error Goto 0
'サブネットマスク
On Error Resume Next
Wscript.Echo "SubnetMask: " & objItem.IPSubnet(0)
If Err.Number = 13 Then
Wscript.Echo "SubnetMasks: none"
End If
Err.Clear
On Error Goto 0

'ゲートウェイ
On Error Resume Next
Wscript.Echo "Gateway: " & objItem.DefaultIPGateway(0)
' Wscript.Echo Err.Number
If Err.Number = 13 Then
Wscript.Echo "Gateway: none"
End If
Err.Clear
On Error Goto 0
Next


' ログインユーザ名
Dim strUserName,objNet
Set objNet = CreateObject("WScript.Network")
strUserName = objNet.UserName
'結果表示
WScript.Echo "UserName: " & strUserName


ゲートウェイのとこにエラーコードを調べたときの残骸が残ってるけど。
一応これで動いたっぽい。
後は、XPだとEchoがいちいちポップアップでうざいので、それがいやなときは

cscript <スクリプト名>


で実行すればstdoutに出てちょっとだけ幸せになれる感じで。

Index of all entries

Home > 2010年10月27日

タグクラウド
Categories
Monthly
Recent Entries
Recent Comments
Recent Trackbacks
Appendix

Nakunaru

    Author:Nakunaru

    データベース(ORACLEとかSQL ServerとかDB2とかMySQLとか)とか技術者教育とかプログラムとか。
    気になる技術を少しずつ勉強していきます。


Return to page top

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。