SQLの窓

2011年03月18日


VBS : 指定した HOST 名を現在の IP アドレスで HOSTS ファイルに登録するスクリプト

最初の 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





posted by lightbox at 2011-03-18 16:32 | VBS + WMI | このブログの読者になる | 更新情報をチェックする
バッチ処理

Microsoft Office
container 終わり

フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

Android SDK ポケットリファレンス
改訂版 Webデザイナーのための jQuery入門
今すぐ使えるかんたん ホームページ HTML&CSS入門
CSS ドロップシャドウの参考デモ
Google Hosted Libraries
cdnjs
BUTTONS (CSS でボタン)
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり