スマホ向け表示

記事一覧

スクリプトによる、クライアントのドメイン参加方法

Windows Server 2012 対応確認済みです。
ローカルドメイン環境で、1箇所だけ修正があったくらいです。(下のほうに書いています) 
 
------------------------------------------------------------
追記
◆このスクリプトからうまくドメイン参加ができない方へ
コマンドプロンプト”管理者として実行”してください。
その後、コマンドからスクリプトファイルを実行してください。 
------------------------------------------------------------
  
確認済みOS:Windows XP, /Windows Server 2003, /Windows Vista, /Windows Server 2008, /
 Windows 7, /Windows Server 2008 R2, /Windows Server 2012, /Windows 10
 
   
ドメインコントローラー確認済みOS:Windows Server 2012 R2 までの全OS(2016はまだ勉強中なのでやってない笑)
 
  
※Windows Server 2012 対応とか、いろいろ追加したり変更したりしています。 
 3パターンのスクリプトを記述
  ・ドメインの所属変更
  ・ワークグループからドメイン参加する
  ・ドメインから離脱する場合
 
 
 
これはスクリプト内に以下の項目をひとまとめにしてみました
 ・DNSの設定変更
 ・ドメインコントローラーとのPing疎通確認
 ・ドメイン離脱
 ・ドメイン参加
 ・所属変更前ドメイン上のコンピュータアカウントを無効にする
 ・5秒のち、再起動

条件:
現在は「nekoserver.local」2003ドメインに
VISTAコンピュータ「VISTATEST-PC」が参加している状態で、
「nekoprint.local」2008ドメインに所属変更だけを行うことを想定
しています。(移行ではない)
あらかじめクライアントPCを鯖と同一セグメント上に移動させておく

ドメインの所属変更時に収集しておくべきこと。
 ・変更先のドメイン管理者ユーザー名とパスワード
 ・新ドメインのDNSサーバアドレス 10.10.1.9 10.10.1.10
 ・新ドメイン名 nekoprint.local
 ・所属変更前のドメイン管理者ユーザー名とパスワード
以上を事前にスクリプト内で書き換えます。


場所:

 11行目…"" 内を、新DNSサーバーのアドレスに書き換える
  arrDNSServers = Array("10.10.1.9","10.10.1.10")

 20行目…"" 内を、新DNSサーバーに書き換える
  strMachines = "dc1.nekoprint.local"
   ※ここはping確認だけなので名前解決できないなら、IPアドレスでもOK

 33行目…NETSETUPをNETCENTERに書き換える
 (クライアントOS:VISTA以降のみ)
 
※34行目…"" 内を、旧ドメインの管理者パスワードに書き換える
   strPassword = "********"
 ※なくてもOK。その場合は行ごと削除。

※35行目…" 内を、旧ドメインの管理者名に書き換える
  strUser = "administrator"
 ※なくてもOK。その場合は行ごと削除。

 56行目…"" 内を、新ドメイン名に書き換える
  strDomain = "nekoprint.local"

※57行目…"" 内を、新ドメインの所属させるOUに書き換える
  strOU = "OU=TestGroup,DC=nekoprint,DC=local"
 ※なくてもOK。その場合は行ごと削除。

 58行目…"" 内を、新ドメイン名の管理者名に書き換える
  strUser = "administrator"

 59行目…"" 内を、新ドメインの管理者パスワードに書き換える
  strPassword = "********"

 79行目…"" 内のcn=部分にコンピュータ名、
     OU=部分は所属のOUに書き換える
    (デフォルトの位置computersの場合はcn=computersにする)
     dc=部分は旧ドメイン名に書き換える
  cn=VISTATEST-PC,OU=TestGroup,dc=nekoserver,dc=local


これがその内容。
以下の部分をメモ帳に貼り付けて「ドメイン参加.vbs」とした。
 
-------------------------------------------------------
・ドメインの所属変更スクリプト 
-------------------------------------------------------
On Error Resume Next

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colNetCards = objWMIService.ExecQuery _
("Select * From Win32_NetworkAdapterConfiguration Where IPEnabled = True")

For Each objNetCard in colNetCards
arrDNSServers = Array("10.10.1.9","10.10.1.10")
objNetCard.SetDNSServerSearchOrder(arrDNSServers)
If errEnable = 0 Then
WScript.Echo "DNSアドレスは正常に変更されました"
Else
WScript.Echo "DNSアドレスの変更ができませんでした。管理者まで問い合わせてください。"
End If
Next

strMachines = "dc1.nekoprint.local"
aMachines = split(strMachines, ";")
For Each machine in aMachines
Set objPing = GetObject("winmgmts:{impersonationLevel=impersonate}")._
ExecQuery("select * from Win32_PingStatus where address = '"_
& machine & "'")
For Each objStatus in objPing
If IsNull(objStatus.StatusCode) or objStatus.StatusCode<>0 Then
WScript.Echo("コンピューター " & machine & " への ping疎通確認ができません。通信に失敗しました。")
End If
Next
Next

Const NETCENTER_ACCT_DELETE = 2 'Disables computer account in domain.
strPassword = "********"
strUser = "administrator"

Set objNetwork = CreateObject("WScript.Network")
strComputer = objNetwork.ComputerName

Set objComputer = GetObject("winmgmts:{impersonationLevel=Impersonate}!\\" & _
strComputer & "\root\cimv2:Win32_ComputerSystem.Name='" & strComputer & "'")
strDomain = objComputer.Domain
intReturn = objComputer.UnjoinDomainOrWorkgroup _
(strPassword, strDomain & "\" & strUser, NETSETUP_ACCT_DELETE)

Dim strUser, strPassword, strDomain
Const JOIN_DOMAIN = 1
Const ACCT_CREATE = 2
Const ACCT_DELETE = 4
Const WIN9X_UPGRADE = 16
Const DOMAIN_JOIN_IF_JOINED = 32
Const JOIN_UNSECURE = 64
Const MACHINE_PASSWORD_PASSED = 128
Const DEFERRED_SPN_SET = 256
Const INSTALL_INVOCATION = 262144
strDomain = "nekoprint.local"
strOU = "OU=TestGroup,DC=nekoprint,DC=local"
strUser = "administrator"
strPassword = "********"

Set objNetwork = CreateObject("WScript.Network")
strComputer = objNetwork.ComputerName
Set objComputer = GetObject("winmgmts:{impersonationLevel=Impersonate}!//" & _
strComputer & "/root/cimv2:Win32_ComputerSystem.Name='" & _
strComputer & "'")

ReturnValue = objComputer.JoinDomainOrWorkGroup(strDomain, _
strPassword, strDomain & "\" & strUser, strOU, _
JOIN_DOMAIN + ACCT_CREATE)
If Not ReturnValue = 0 Then ' if the joining fails
Wscript.Echo "コンピュータのドメインへの参加は失敗しました。管理者に問い合わせて手動でドメイン参加するか、再試行してください。OK をクリックすると説明が表示されます。"
Wscript.Echo "エラーの説明: 新ドメインコントローラーとの通信ができているか(IPSEC設定を行っている場合、参加させるコンピューターとドメインコントローラーは通信できる状態か)、DNSアドレスが正しく変更されているか、nslookupコマンドでドメインコントローラーの名前解決が出来るか、ping疎通ができているか、現在はワークグループ環境か、このコンピュータのIPアドレスは正しいか、所属変更先ドメインに同じコンピュータ名が存在していないか、を確認してください。再試行を行う前にコンピュータの再起動を行ってください。" & Err.Description
Wscript.Quit
Else
Wscript.echo "このコンピュータは正常にドメイン参加しました。OK をクリックすると自動的に再起動します。"
END If
WScript.sleep(5000)

Set objComputer = GetObject("LDAP://cn=VISTATEST-PC,OU=TestGroup,dc=nekoserver,dc=local")
objComputer.AccountDisabled = True
objComputer.SetInfo
Wscript.Echo "所属変更前ドメイン上のコンピュータアカウントは無効になりました。"

Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate,(Shutdown)}!\\" & _
strComputer & "\root\cimv2")

Set colOperatingSystems = objWMIService.ExecQuery _
("Select * from Win32_OperatingSystem")

For Each objOperatingSystem in colOperatingSystems
objOperatingSystem.Reboot()
Next
 
----------------------------------------------------- 
これでWindows VISTA, Windows 7クライアントは2008ドメインに参加(所属変更)できる。

説明:
①まず、参照するDNSを置き換える
 成功・失敗それぞれに対しメッセージを表示させるようにした。
②置き換えたDNSサーバー名に対してPingを飛ばして疎通確認
 失敗したらエラーが返ってくる。成功時は何も表示しない。
③今現在のドメインから離れる(ワークグループ化)
 メッセージなし。紛らわしくなるから。
 所属変更なら、そのまま参加のスクリプトでもいいんだろうけど…
④そのまま再起動せずに新ドメインへ参加
 ほんとうはしたほうがいいけど面倒なので…
⑤ローカルadministrator アカウントの無効化
⑥旧ドメインnekoserver.local上のクライアントコンピュータアカウント
 VISTATEST-PC を無効化
⑦自動的に再起動を行う。
 
 

----------------------------------------------------------
ドメイン参加失敗の原因は以下の状況が想定されます。

・入力したドメイン名またはドメイン管理者ユーザー名・パスワード
・コマンドプロンプトから正常にpingが飛ぶかどうか
・クライアントのIPアドレスが旧ドメインのものではないか
・クライアントOSによってスクリプト内を書き換えたかどうか
・33行目の書き換え 
・⑥で失敗する場合はDNSの参照に問題があるので、新サーバのDNSサーバ上に旧サーバのDNSを追加するか、11行目に旧ドメインのDNSアドレスを追加しておく。(旧DNSが不要なら後で削除しておく。ココもスクリプトを使うなら10~18行目までを77行目あたりの空白部分にコピペして新サーバのDNSのみにすればよい)
 
 
 
----------------------------------------------------------
次の条件は
・クライアントOS:XP「XPTEST-PC」
・2003ドメイン「nekoserver.local」から2008ドメイン「nekoprint.local」に所属変更だけを行う (移行ではない)
・ほかは同条件
 
 

On Error Resume Next

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colNetCards = objWMIService.ExecQuery _
("Select * From Win32_NetworkAdapterConfiguration Where IPEnabled = True")

For Each objNetCard in colNetCards
arrDNSServers = Array("10.10.1.9","10.10.1.10")
objNetCard.SetDNSServerSearchOrder(arrDNSServers)
If errEnable = 0 Then
WScript.Echo "DNSアドレスは正常に変更されました"
Else
WScript.Echo "DNSアドレスの変更ができませんでした。管理者まで問い合わせてください。"
End If
Next

strMachines = "dc1.nekoprint.local"
aMachines = split(strMachines, ";")
For Each machine in aMachines
Set objPing = GetObject("winmgmts:{impersonationLevel=impersonate}")._
ExecQuery("select * from Win32_PingStatus where address = '"_
& machine & "'")
For Each objStatus in objPing
If IsNull(objStatus.StatusCode) or objStatus.StatusCode<>0 Then
WScript.Echo("コンピューター " & machine & " への ping疎通確認ができません。通信に失敗しました。")
End If
Next
Next

Const NETSETUP_ACCT_DELETE = 2 'Disables computer account in domain.
strPassword = "********"
strUser = "administrator"

Set objNetwork = CreateObject("WScript.Network")
strComputer = objNetwork.ComputerName

Set objComputer = GetObject("winmgmts:{impersonationLevel=Impersonate}!\\" & _
strComputer & "\root\cimv2:Win32_ComputerSystem.Name='" & strComputer & "'")
strDomain = objComputer.Domain
intReturn = objComputer.UnjoinDomainOrWorkgroup _
(strPassword, strDomain & "\" & strUser, NETSETUP_ACCT_DELETE)

Dim strUser, strPassword, strDomain
Const JOIN_DOMAIN = 1
Const ACCT_CREATE = 2
Const ACCT_DELETE = 4
Const WIN9X_UPGRADE = 16
Const DOMAIN_JOIN_IF_JOINED = 32
Const JOIN_UNSECURE = 64
Const MACHINE_PASSWORD_PASSED = 128
Const DEFERRED_SPN_SET = 256
Const INSTALL_INVOCATION = 262144
strDomain = "nekoprint.local"
strOU = "OU=TestGroup,DC=nekoprint,DC=local"
strUser = "administrator"
strPassword = "********"

Set objNetwork = CreateObject("WScript.Network")
strComputer = objNetwork.ComputerName
Set objComputer = GetObject("winmgmts:{impersonationLevel=Impersonate}!//" & _
strComputer & "/root/cimv2:Win32_ComputerSystem.Name='" & _
strComputer & "'")

ReturnValue = objComputer.JoinDomainOrWorkGroup(strDomain, _
strPassword, strDomain & "\" & strUser, strOU, _
JOIN_DOMAIN + ACCT_CREATE)
If Not ReturnValue = 0 Then ' if the joining fails
Wscript.Echo "コンピュータのドメインへの参加は失敗しました。管理者に問い合わせて手動でドメイン参加するか、再試行してください。OK をクリックすると説明が表示されます。"
Wscript.Echo "エラーの説明: 新ドメインコントローラーとの通信ができているか(IPSEC設定を行っている場合、参加させるコンピューターとドメインコントローラーは通信できる状態か)、DNSアドレスが正しく変更されているか、nslookupコマンドでドメインコントローラーの名前解決が出来るか、ping疎通ができているか、現在はワークグループ環境か、このコンピュータのIPアドレスは正しいか、所属変更先ドメインに同じコンピュータ名が存在していないか、を確認してください。再試行を行う前にコンピュータの再起動を行ってください。" & Err.Description
Wscript.Quit
Else
Wscript.echo "このコンピュータは正常にドメイン参加しました。OK をクリックすると自動的に再起動します。"
END If
WScript.sleep(5000)

Set objComputer = GetObject("LDAP://cn=XPTEST-PC,OU=TestGroup,dc=nekoserver,dc=local")
objComputer.AccountDisabled = True
objComputer.SetInfo
Wscript.Echo "所属変更前ドメイン上のコンピュータアカウントは無効になりました。"

Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate,(Shutdown)}!\\" & _
strComputer & "\root\cimv2")

Set colOperatingSystems = objWMIService.ExecQuery _
("Select * from Win32_OperatingSystem")

For Each objOperatingSystem in colOperatingSystems
objOperatingSystem.Reboot()
Next
 
----------------------------------------------------------
 
二つの違いはクライアントOSによって33行目を変更したかどうか、だ

XP/2003…NETSETUP
VISTA/2008/7/2008R2…NETCENTER
 
 
----------------------------------------------------------
では次の条件
・クライアントOS:XP
・2008ドメイン「nekoserver.local」に参加すみ
・2008別ドメイン「nekoprint.local」に所属変更(移行ではない)
・ほかは同条件
 
このスクリプトの33行目は、2003 -> 2008のときと同様、変更せずとも問題はない。
Const NETSETUP_ACCT_DELETE = 2 'Disables computer account in domain.
 
 
----------------------------------------------------------
次はちょっとてこずったが。
・クライアントOS:XP「XPTEST-PC」
・2008ドメイン「nekoserver.local」に参加済み
・2003ドメイン「nekoprint.local」への所属変更
・ほかは同条件

これは上記と同じようなスクリプトの内容でいいのだが、
強制的にワークグループにされてしまう場合があるので
そんな時の再参加用の別スクリプトを用意した。
まあ、大抵は問題なく動作するのだが。

Dim strUser, strPassword, strDomain
Const JOIN_DOMAIN = 1
Const ACCT_CREATE = 2
Const ACCT_DELETE = 4
Const WIN9X_UPGRADE = 16
Const DOMAIN_JOIN_IF_JOINED = 32
Const JOIN_UNSECURE = 64
Const MACHINE_PASSWORD_PASSED = 128
Const DEFERRED_SPN_SET = 256
Const INSTALL_INVOCATION = 262144
strDomain = "nekoprint.local"
strUser = "administrator"
strPassword = "********"

Set objNetwork = CreateObject("WScript.Network")
strComputer = objNetwork.ComputerName
Set objComputer = GetObject("winmgmts:{impersonationLevel=Impersonate}!//" & _
strComputer & "/root/cimv2:Win32_ComputerSystem.Name='" & _
strComputer & "'")

ReturnValue = objComputer.JoinDomainOrWorkGroup(strDomain, _
strPassword, strDomain & "\" & strUser, strOU, _
JOIN_DOMAIN + ACCT_CREATE)
If Not ReturnValue = 0 Then ' if the joining fails
Wscript.Echo "コンピュータのドメインへの参加は失敗しました。管理者に問い合わせて手動でドメイン参加するか、再試行してください。OK をクリックすると説明が表示されます。"
Wscript.Echo "エラーの説明: 新ドメインコントローラーとの通信ができているか(IPSEC設定を行っている場合、参加させるコンピューターとドメインコントローラーは通信できる状態か)、DNSアドレスが正しく変更されているか、nslookupコマンドでドメインコントローラーの名前解決が出来るか、ping疎通ができているか、現在はワークグループ環境か、このコンピュータのIPアドレスは正しいか、所属変更先ドメインに同じコンピュータ名が存在していないか、を確認してください。再試行を行う前にコンピュータの再起動を行ってください。" & Err.Description
Wscript.Quit
Else
Wscript.echo "このコンピュータは正常にドメイン参加しました。OK をクリックすると自動的に再起動します。"
END If
WScript.sleep(5000)

Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate,(Shutdown)}!\\" & _
strComputer & "\root\cimv2")

Set colOperatingSystems = objWMIService.ExecQuery _
("Select * from Win32_OperatingSystem")

For Each objOperatingSystem in colOperatingSystems
objOperatingSystem.Reboot()
Next

 
--------------------------------------------------
ドメインから離脱する場合
--------------------------------------------------
※クライアントは、Windows VISTA, Windows 7 以降用。
 XP/2003の場合は、1行目の【NETSCENTER】 を、【NETSETUP】 に置き換える。
 設定は以下のとおり。
 
  参加中のドメイン= nekoprint.local
  OU= TestGroup
  ドメイン管理者名= administrator
  ドメインの管理者パスワード= ********
  クライアントコンピューター名= administrator11 
  離脱後のワークグループ名は、ドメイン名と同一。 
  ドメインコンピュータアカウントを無効化する。(確認あり)
  5秒後、再起動させる。
    
 
 
Const NETCENTER_ACCT_DELETE = 2 'Disables computer account in domain.

Set objNetwork = CreateObject("WScript.Network")
strComputer = objNetwork.ComputerName

Set objComputer = GetObject("winmgmts:{impersonationLevel=Impersonate}!\\" & _
strComputer & "\root\cimv2:Win32_ComputerSystem.Name='" & strComputer & "'")
strDomain = objComputer.Domain
intReturn = objComputer.UnjoinDomainOrWorkgroup _

Set objNetwork = CreateObject("Wscript.Network")
strComputer = objNetwork.ComputerName
Set objComputer = GetObject("LDAP://cn=administrator11,OU=TestGroup,dc=nekoprint,dc=local")
If objComputer.AccountDisabled Then
Wscript.Echo "コンピュータアカウントはすでに無効になっています。OKをクリックすると5秒後に再起動します。"
Else
objComputer.AccountDisabled = True
objComputer.SetInfo
Wscript.Echo "OKをクリックすると、ドメイン上のコンピュータアカウントを無効化し、5秒後に再起動します。"

Set objNetwork = CreateObject("WScript.Network")
strComputer = objNetwork.ComputerName
Set objComputer = GetObject("winmgmts:{impersonationLevel=Impersonate}!//" & _
strComputer & "/root/cimv2:Win32_ComputerSystem.Name='" & _
strComputer & "'")

WScript.sleep(5000)

Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate,(Shutdown)}!\\" & _
strComputer & "\root\cimv2")

Set colOperatingSystems = objWMIService.ExecQuery _
("Select * from Win32_OperatingSystem")

For Each objOperatingSystem in colOperatingSystems
objOperatingSystem.Reboot()
Next

End If 

※ココ、おかしな話なのですが、Windows 7 において、1行目の【NETCENTER】の部分を、
 【NETSETUP】 にしても動くのですが、再起動してもドメイン離脱できていないんですよね…
 あと、ドメインコントローラー側のGUI上では、無効化されているのに、ログオンできるとかね…
 
 また、Windows XP については、【NETCENTER】 のままだと、コンピューターアカウントの無効化はされるが、
 再起動処理をしてくれなくなくなることを確認しています。
 (ドメイン離脱は出来ている)

 こういう動作も1行目を正しく設定すれば上記の様にはならないので、1行目は絶対に気をつけるところです。
 
 
 
 
--------------------------------------
・ワークグループからドメイン参加する 
--------------------------------------
といってもDNS変更と、ping疎通確認と、自動再起動設定はしていますが。
 設定は以下のとおり。
 
  現在の状態= ワークグループ
  参加したいドメイン名= nekoprint.local
  ドメイン管理者名= administrator
  ドメインの管理者パスワード= ********
  DNSサーバーアドレス= 10.10.10.1 10.10.10.2
  OU= TestGroup に所属させる予定
  クライアントコンピューター名= administrator11 
   
 
 
On Error Resume Next

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colNetCards = objWMIService.ExecQuery _
("Select * From Win32_NetworkAdapterConfiguration Where IPEnabled = True")

For Each objNetCard in colNetCards
arrDNSServers = Array("10.10.10.1","10.10.10.2")
objNetCard.SetDNSServerSearchOrder(arrDNSServers)
If errEnable = 0 Then
WScript.Echo "DNSアドレスは正常に変更されました"
Else
WScript.Echo "DNSアドレスの変更ができませんでした。管理者まで問い合わせてください。"
End If
Next

strMachines = "10.10.10.1"
aMachines = split(strMachines, ";")
For Each machine in aMachines
Set objPing = GetObject("winmgmts:{impersonationLevel=impersonate}")._
ExecQuery("select * from Win32_PingStatus where address = '"_
& machine & "'")
For Each objStatus in objPing
If IsNull(objStatus.StatusCode) or objStatus.StatusCode<>0 Then
WScript.Echo("コンピューター " & machine & " への ping疎通確認ができません。通信に失敗しました。")
End If
Next
Next

Dim strUser, strPassword, strDomain
Const JOIN_DOMAIN = 1
Const ACCT_CREATE = 2
Const ACCT_DELETE = 4
Const WIN9X_UPGRADE = 16
Const DOMAIN_JOIN_IF_JOINED = 32
Const JOIN_UNSECURE = 64
Const MACHINE_PASSWORD_PASSED = 128
Const DEFERRED_SPN_SET = 256
Const INSTALL_INVOCATION = 262144
strDomain = "nekoprint.local"
strOU = "OU=testgroup,DC=nekoprint,DC=local"
strUser = "administrator"
strPassword = "********"

Set objNetwork = CreateObject("WScript.Network")
strComputer = objNetwork.ComputerName
Set objComputer = GetObject("winmgmts:{impersonationLevel=Impersonate}!//" & _
strComputer & "/root/cimv2:Win32_ComputerSystem.Name='" & _
strComputer & "'")

ReturnValue = objComputer.JoinDomainOrWorkGroup(strDomain, _
strPassword, strDomain & "\" & strUser, strOU, _
JOIN_DOMAIN + ACCT_CREATE)
If Not ReturnValue = 0 Then ' if the joining fails
Wscript.Echo "コンピュータのドメインへの参加は失敗しました。管理者に問い合わせて手動でドメイン参加するか、再試行してください。OK をクリックすると説明が表示されます。"
Wscript.Echo "エラーの説明: 新ドメインコントローラーとの通信ができているか(IPSEC設定を行っている場合、参加させるコンピューターとドメインコントローラーは通信できる状態か)、DNSアドレスが正しく変更されているか、nslookupコマンドでドメインコントローラーの名前解決が出来るか、ping疎通ができているか、現在はワークグループ環境か、このコンピュータのIPアドレスは正しいか、所属変更先ドメインに同じコンピュータ名が存在していないか、を確認してください。再試行を行う前にコンピュータの再起動を行ってください。" & Err.Description
Wscript.Quit
Else
Wscript.echo "このコンピュータは正常にドメイン参加しました。OKをクリックすると5秒後に再起動します。"
END If
WScript.sleep(5000)


Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate,(Shutdown)}!\\" & _
strComputer & "\root\cimv2")

Set colOperatingSystems = objWMIService.ExecQuery _
("Select * from Win32_OperatingSystem")

For Each objOperatingSystem in colOperatingSystems
objOperatingSystem.Reboot()
Next

--------------------------------------
内容:
※Windows 7 クライアントが、Windows Server 2003ドメインに参加する場合。
 ・DNSサーバーアドレスの変更(10.10.10.1と、10.10.10.2)
 ・ping疎通確認(10.10.10.1)
 ・ローカルPC(ドメイン所属なし)からドメイン 【nekoprint.local】 へ参加。
 ・ドメイン参加と同時に 【OU=testgroup】 へ所属させる。 
 ・5秒後、再起動

 
--------------------------------------
総合した結果?
--------------------------------------
・XP/2003 コンピュータをドメインから離脱させる場合、
 33行目は「Const NETSETUP_ACCT_DELETE = 2 'Disables computer account in domain.」を使用。
・VISTA/2008/7/2008R2/2012 コンピュータをドメインから離脱させる場合は、
 33行目を「Const NETCENTER_ACCT_DELETE = 2 'Disables computer account in domain.」に置き換える。
・ワークグループになってしまう原因やスクリプトが動作しないときは、やはり33行目の記述ミスの場合が多い。
・Pingは、クライアント側からDNSサーバーの名前解決が出来ているかどうかを確認するものなので、IPアドレスでの確認はしないこと。
・44行目、前から質問いただいていたのですがココは書式を以前のものを書いておりまして、
 そのために括弧でくくっただけなので…紛らわしくてすいません、ココは削除でかまわないです。
 自分のようなヘタレが書いたショボいブログだし、書式としてなりたってないのに、
 コレで考えられるとは正直思わなかったです…
 (strPassword, strDomain & "\" & strUser, NETSETUP_ACCT_DELETE)
・ドメインコントローラーは、Windows 2000 Server以降ならすべて対応している。
・所属変更したときに、旧ドメインに作成されたコンピューターアカウントが無効になっていない場合は、
 スクリプトを使う前に旧サーバーへログオンした状態であるか、
 またはDNS参照が出来ていない可能性がある。
・Windows Server 2012 がドメインコントローラーだった場合に関して少し違うところがあったといえば、
 56行目のドメイン参加の部分 【strDomain = "nekoprint.local"】 の部分だけですね。
 ここは、"nekoprint.local" <- 【.local】 がダメなようで、"nekoprint" にしないと動かなかったです。
 メンバーサーバーにする場合には、上記スクリプトでなんら問題はなかったですね。
・nslookup コマンドを使い、ドメインコントローラーの名前解決が出来るかどうか(クライアント側からコマンドを実行する)
・IPSEC設定の見直し(ドメイン側もしくは参加させるパソコン側で設定を行っている場合)
・スクリプトを実行した際に失敗する場合は、コマンドプロンプト(管理者として実行)を起動し、コマンドからスクリプトを実行してください。
 
 
とまあ、いろいろありますが、要するに「NETCENTER」や「NETSETUP」は、
「ネットワークと共有センター」や「ネットワークのセットアップウィザード」に直結している。つまりドメイン参加は…アレですね。

こんな感じで無理やり作ったスクリプトでも動作確認はできたのでこれを使おうと思います。
けっこうハマったのは実は離脱だったりしますが。 

あとの課題はOUですね。ドメイン参加させてから、
別でOU移動のスクリプトでよかったんだろうけど…