最初の PC 名は処理に必要ありませんが、確認表示の為に取得しています。「テスト用コンピュータ名」に指定する HOST 名を設定しますが、想定しているのは、Windows7 の XPモードで環境が移動した際に、その環境で取得した(DHCP) IPアドレスに対して、「固定」の HOST 名で名前解決しようというものです。 ■ IPアドレスの取得 ■ HOSTS があるディレクトリの取得 ■ HOSTS ファイルを開いてすべてのテキストを取得 ■ 新規なのか、既に以前設定されていたかをチェック ■ 書き込み というプロセスで実行されます。作業する前には、HOSTS ファイルのオリジナルをバックアップしておくといいと思います。
' 現在のコンピューター名の取得
Dim ComputerName
Set objWMIService = GetObject("winmgmts:\.\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * From Win32_ComputerSystem")
For Each objItem in colItems
ComputerName = objItem.Name
Exit For
Next
Wscript.Echo ComputerName
' テスト用コンピュータ名
Dim TestComputerName
TestComputerName = "layla"
' IPアドレスの取得
Dim IPAddress
Set obj = GetObject("winmgmts:\.\root\cimv2")
Set objTargets = obj.ExecQuery( _
"select * from Win32_NetworkAdapterConfiguration " & _
"where IPEnabled = True" _
)
For Each objTarget in objTargets
For Each objAddress in objTarget.IPAddress
IPAddress = objAddress & ""
Exit For
Next
Next
Wscript.Echo IPAddress
' HOSTS があるディレクトリの取得
Set obj = CreateObject("Shell.Application")
Set objFolder = obj.NameSpace( &h25 )
' HOSTS ファイルを開いてすべてのテキストを取得
FilePath = objFolder.Self.Path&"\drivers\etc\hosts"
Set Fso = CreateObject( "Scripting.FileSystemObject" )
Set objHandle = Fso.OpenTextFile( FilePath, 1 )
strText = objHandle.ReadAll
aData = Split( strText, vbCrLf )
objHandle.Close
' 新規なのか、既に以前設定されていたかをチェック
bExist = False
For I = 0 to Ubound( aData )-1
aWork = Split( aData(I), " " )
if Ubound(aWork) >= 0 then
if Trim(aWork(0)) <> "" then
if Ubound( aWork ) = 1 then
strServer = Trim(aWork(1))
if Ucase(TestComputerName) = Ucase(strServer) then
bExist = True
aData(I) = IPAddress & " " & TestComputerName
Exit For
end if
end if
end if
end if
Next
' 新規
if not bExist then
strText = strText & vbCrLf & IPAddress & " " & TestComputerName & vbCrLf
else
' 既に以前設定されている
strText = Join( aData, vbCrLf )
end if
' 書き込み
Set objHandle = Fso.OpenTextFile( FilePath, 2, True )
objHandle.Write strText
objHandle.Close
VBScriptドキュメント
|
|
【VBS + WMIの最新記事】
- Windows10 : VBScript : WMI を使用してレジストリ情報より、shell: を使ってフォルダを開く(実行できる)コマンドラインの一覧ボタンを表示する Html Applicati..
- VBScript( WMI )によるイベント関数を WMI に登録するタイマー処理
- VBScript : スクリプトを終了しないようにする
- 64ビット PC の VBScript で 32ビット ODBC ドライバの一覧を取得する( ODBC 接続のドライバ文字列を正しく取得したい )
- VBScript + WMI : ファイルの状態の監視
- VBScript : WMI と NT Provider(ADSI) をそれぞれ使用して、共有を『登録』『一覧』『削除』するサンプル
- VBSCript+WMI : コンピュータ上のファイル検索と詳細情報
- VBScript : OSのバージョンを取得
- VBS : コンピュータから c$ 共有を一時的に削除
【VBScript関連のカテゴリ】






