- PR -

Windows 2003 ServerにおけるWinsサーバを利用したログイン

投稿者投稿内容
ちゃっぴ
ぬし
会議室デビュー日: 2004/12/10
投稿数: 873
投稿日時: 2005-01-26 00:38
引用:

あとは、netshを利用したバッチを利用することで、上記の作業を単純化したりするのもありでしょう。



Batchでは、ありませんが・・・
このようなScriptを用いればRemoteで変更可能です。

コード:
Option Explicit

Const IP_ADDRESS = "xxx.xxx.xxx.xxx"  ' 接続先IP Address
Const USER_NAME = "hoge1\hoge2"       ' 接続先ComputerへのLogon Account
Const PASS_WORD = "hogehoge3"         ' 接続先ComputerへのLogon Password
' 設定するDNS Server IP Address (";"区切り)
Const DNS_IP_ARRAY = "xxx.xxx.xxx.xxx;xxx.xxx.xxx.xxx"

Call S_SetDNSAddress(IP_ADDRESS, USER_NAME, PASS_WORD, _
    Split(DNS_IP_ARRAY, ";"))

'********************************************************************
'【S_SetDNSAddress】
' Client の DNS を設定
'
'引数   strTargetIP     As String   ' 設定するClient IP Address
'       strUserName     As String   ' 設定するClientへのLogon Account
'       strPassword     As String   ' 設定するClientへのLogon Password
'       strDNS_IP()     As String   ' DNS Server IP Address (配列)
'********************************************************************
Sub S_SetDNSAddress(strTargetIP, strUserName, _
                    strPassword, strDNS_IP())
    Dim objWMILocator   'As WbemScripting.SWbemLocator
    Dim objWMIServices  'As WbemScripting.SWbemServices
    Dim colItems        'As WbemScripting.SWbemObjectSet
    Dim objItem         'As WbemScripting.SWbemObject
    Dim lngReturn       'As Long
    
    'On Error Resume Next
    
    ' 対象Serverへ接続
    Set objWMILocator = CreateObject("WbemScripting.SWbemLocator")
    Set objWMIServices = objWMILocator.ConnectServer( _
        strTargetIP, "\root\cimv2", strUserName, strPassword)
    objWMIServices.Security_.ImpersonationLevel = 3
    If Err.Number Then
        Call S_DisprayMessage(strTargetIP, "失敗", _
            "接続時にErrorが発生しました。" & Err.Description)
    End If
    
    ' "Win32_NetworkAdapterConfiguration"を検索
    Set colItems = objWMIServices.ExecQuery( _
        "SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")
    
    For Each objItem In colItems
        With objItem
            ' Adapter に対象のIP Addressが含まれている場合
            If Not IsNull(.IPAddress) Then
                If UBound(Filter(.IPAddress, strTargetIP)) > -1 Then
                    ' AdapterにDNS Server Address を設定
                    lngReturn = .SetDNSServerSearchOrder(strDNS_IP)
                    If lngReturn = 0 Then
                        Call S_DisprayMessage(strTargetIP, "成功", _
                            "正常に登録されました。")
                    Else
                        Call S_DisprayMessage(strTargetIP, "失敗", _
                            "DNS設定時にErrorが発生しました。" & lngReturn)
                    End If
                    Exit For
                End If
            End If
        End With
    Next
    
    Set objItem = Nothing
    Set colItems = Nothing
    Set objWMIServices = Nothing
    Set objWMILocator = Nothing
End Sub

Sub S_DisprayMessage(strIP, strFlg, strDescript)
    WScript.Echo CStr(Now) & "," & strFlg & "," & strIP & "," & strDescript
End Sub



SetDNSServerSearchOrder Method of the Win32_NetworkAdapterConfiguration Class
http://msdn.microsoft.com/library/en-us/wmisdk/wmi/setdnsserversearchorder_method_in_class_win32_networkadapterconfiguration.asp?frame=true

あとは、変更するClientのIP Address一覧表を作っておいて
Loopで回してやれば、ご希望のことができるかと・・・
kita_pon
会議室デビュー日: 2004/08/14
投稿数: 14
投稿日時: 2005-02-12 04:12
Mattun様、kaz様、ちゃっぴ様

遅れましたが、いろいろな助言ありがとうございました。

結局、ADの移行に関するプロジェクトチームが解散することになり
教えていただいたことを活かせず終わりになってしましました。

今回はかなり勉強になりましたので以後活かしていきたいと思います。

スキルアップ/キャリアアップ(JOB@IT)