作成 2010.03.04
更新 2010.03.04
更新 2010.03.04
VBScript で Active Directory の機能レベルを調べる
On Error Resume Next Dim baseDN, objRootDSE, objDomain Dim intBehavior, arrBehavior(4), arrNativeOrMix(1) Dim strResult baseDN = "" arrBehavior(0) = "Windows 2000 " arrBehavior(1) = "Windows Server 2003 中間" arrBehavior(2) = "Windows Server 2003" arrBehavior(3) = "Windows Server 2008" arrBehavior(4) = "Windows Server 2008 R2" arrNativeOrMix(0) = "ネイティブ" arrNativeOrMix(1) = "混在" Set objRootDSE = GetObject("LDAP://rootDSE") If Err.Number <> 0 Then WScript.Echo "ドメイン接続に失敗しました。終了します。" WScript.Quit End If baseDN = objRootDSE.Get("defaultNamingContext") ' Domain Functional Level Set objDomain = GetObject("LDAP://" & baseDN) objDomain.GetInfo intBehavior = 0 strResult = "Domain:" & vbTab On Error Resume Next intBehavior = objDomain.Get("msDS-Behavior-Version") If Err.Number <> 0 Or intBehavior = 0 Then intBehavior = objDomain.Get("nTMixedDomain") strResult = strResult & arrBehavior(0) & arrNativeOrMix(intBehavior) ElseIf intBehavior > UBound(arrBehavior) Or intBehavior < 0Then strResult = strResult & "Unknown Level: " & intBehavior Else strResult = strResult & arrBehavior(intBehavior) End If On Error Goto 0 ' Forest Functional Level intBehavior = 0 strResult = strResult & vbNewLine & "Forest:" & vbTab Set objDomain = GetObject("LDAP://CN=Partitions,CN=Configuration," & baseDN) objDomain.GetInfo On Error Resume Next intBehavior = objDomain.Get("msDS-Behavior-Version") If Err.Number <> 0 Or intBehavior = 0 Then strResult = strResult & arrBehavior(0) ElseIf intBehavior > UBound(arrBehavior) Or intBehavior < 0Then strResult = strResult & "Unknown Level: " & intBehavior Else strResult = strResult & arrBehavior(intBehavior) End If On Error Goto 0 WScript.Echo strResult