2015-08-21 2 views
-1

Мой босс просит обновить очень старый сценарий, используемый до моего времени здесь, чтобы добавить в него поле State. Ниже приведен скрипт, который возвращает всех активных пользователей и их адреса электронной почты. Теперь мне просто нужно добавить State:Старый Email Script Revamp

Const ADS_PROPERTY_NOT_FOUND = &h8000500D 
Const ADS_UF_ACCOUNTDISABLE = 2 
Const strX400Search = "X400" 

Set objRootDSE = GetObject("LDAP://rootDSE") 
strDomain = objRootDSE.Get("defaultNamingContext") 
strADPath = "LDAP://" & strDomain 

Set objDomain = GetObject(strADPath) 

Set objConnection = CreateObject("ADODB.Connection") 
objConnection.Open "Provider=ADsDSOObject;" 
Set objCommand = CreateObject("ADODB.Command") 
objCommand.ActiveConnection = objConnection 
objCommand.Properties("Page Size") = 5000 

objCommand.CommandText = "<" & strADPath & ">" & _ 
    ";(&(|(objectClass=contact)(objectClass=group)) (mail=*))" & _ 
    ";distinguishedName,displayName,mail,proxyAddresses;subtree" 

Set objRecordSet = objCommand.Execute 

AddressCount = 0 

varDisabledCounter = 0 

objCommand.CommandText = "<" & strADPath & ">" & _ 
    ";(&(objectClass=user)(mail=*))" & _ 
    ";distinguishedName,displayName,mail,proxyAddresses;subtree" 

Set objRecordSet = objCommand.Execute 

strResult = strResult & "Name" & "," & "Email" & VbCrLf 

While Not objRecordSet.EOF 
    strUserDN = objRecordSet.Fields("distinguishedName") 
    strUserDN=Replace(strUserDN,"/","\/") 
    set objUser= GetObject("LDAP://"& strUserDN & "") 

    If objUser.AccountDisabled = FALSE Then 
    strResult = strResult & objUser.givenName & " " & objUser.sn & "," 
    strResult = strResult & objUser.mail 
    strResult = strResult & VbCrLf 
    End If 

    objRecordSet.MoveNext 
Wend 

Set objFileSystem = CreateObject("Scripting.FileSystemObject") 
Set objOutputFile = objFileSystem.CreateTextFile("C:\Email List.csv") 
objOutputFile.Write strResult 

LF=chr(10) 
WScript.Echo "Done - Please Check C:\Email List.csv to see your file." & _ 
    LF & LF & "If you have any questions please contact Kevin Reed" 
+0

Итак, что проблема у вас возникли? –

+0

Это работает, но пытается также добавить свое состояние в качестве столбца. – LaserPEWPEW

+0

Итак, добавьте соответствующий атрибут ('st'). Опять же, в чем проблема, которую вы испытываете? –

ответ

0

Это, вероятно, сделать это ...

Const ADS_PROPERTY_NOT_FOUND = &h8000500D 
Const ADS_UF_ACCOUNTDISABLE = 2 
Const strX400Search = "X400" 

Set objRootDSE = GetObject("LDAP://rootDSE") 
strDomain = objRootDSE.Get("defaultNamingContext") 
strADPath = "LDAP://" & strDomain 

Set objDomain = GetObject(strADPath) 

Set objConnection = CreateObject("ADODB.Connection") 
objConnection.Open "Provider=ADsDSOObject;" 
Set objCommand = CreateObject("ADODB.Command") 
objCommand.ActiveConnection = objConnection 
objCommand.Properties("Page Size") = 5000 

objCommand.CommandText = "<" & strADPath & ">" & _ 
    ";(&(|(objectClass=contact)(objectClass=group)) (mail=*))" & _ 
    ";distinguishedName,displayName,mail,proxyAddresses,st;subtree" 

Set objRecordSet = objCommand.Execute 

AddressCount = 0 

varDisabledCounter = 0 

objCommand.CommandText = "<" & strADPath & ">" & _ 
    ";(&(objectClass=user)(mail=*))" & _ 
    ";distinguishedName,displayName,mail,proxyAddresses,st;subtree" 

Set objRecordSet = objCommand.Execute 

strResult = strResult & "Name" & "," & "Email" & VbCrLf 

While Not objRecordSet.EOF 
    strUserDN = objRecordSet.Fields("distinguishedName") 
    strUserDN=Replace(strUserDN,"/","\/") 
    set objUser= GetObject("LDAP://"& strUserDN & "") 

    If objUser.AccountDisabled = FALSE Then 
    strResult = strResult & objUser.givenName & " " & objUser.sn & "," 
    strResult = strResult & objUser.mail & "," 
    strResult = strResult & objUser.st 
    strResult = strResult & VbCrLf 
    End If 

    objRecordSet.MoveNext 
Wend 

Set objFileSystem = CreateObject("Scripting.FileSystemObject") 
Set objOutputFile = objFileSystem.CreateTextFile("C:\Email List.csv") 
objOutputFile.Write strResult 

LF=chr(10) 
WScript.Echo "Done - Please Check C:\Email List.csv to see your file." & _ 
    LF & LF & "If you have any questions please contact Kevin Reed" 
Смежные вопросы