作成 2010.01.08
更新 2010.01.08
更新 2010.01.08
VBScript で Active Directory のコンピュータ アカウントを列挙する
このサンプルでは Active Directory のコンピュータアカウントを列挙します。cscript で起動してください。
Option Explicit
' CScriptで実行してください
Dim WshShell
Dim strEnvDnsDomain, arrItem, baseDN, i
Dim objConnection, objCommand, objRecordSet, strCommandText
Dim strUserName
' DNSドメインを取得しbaseDNを設定
Set WshShell = CreateObject("WScript.Shell")
strEnvDnsDomain = WshShell.ExpandEnvironmentStrings("%USERDNSDOMAIN%")
If Left(strEnvDnsDomain, 1) = "%" Then
WScript.Echo "操作しているPCはActive Directoryドメインに参加していないようです。" & vbNewLine & "終了します。"
WScript.Quit
End If
arrItem = Split(strEnvDnsDomain, ".")
baseDN = ""
For i = 0 to UBound(arrItem)
If i = 0 Then
baseDN = "DC=" & arrItem(i)
Else
baseDN = baseDN & ",DC=" & arrItem(i)
End If
Next
' DCに接続
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
objCommand.ActiveConnection = objConnection
objCommand.Properties("Page Size") = 1000
strCommandText = "<LDAP://" & baseDN & ">;" & _
"(objectClass=computer);" & _
"distinguishedName,sAMAccountName;" & _
"subtree"
objCommand.CommandText = strCommandText
Set objRecordSet = objCommand.Execute
WScript.Echo "--- BEGIN ---"
Do Until objRecordset.EOF
strUserName = objRecordset.Fields("sAMAccountName")
WScript.Echo strUserName
objRecordset.MoveNext
Loop
objConnection.Close
Set objCommand = Nothing
WScript.Echo "--- END ---"
参考