最初の 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関連のカテゴリ】