Guest Miha Posted June 3, 2008 Posted June 3, 2008 Hi guys, I need a script that will export all users (with e-mail addresses) from AD that have Exchange mailboxes into a .csv or plain text format. It needs to be a script (not manual export) so that will run automatically with scheduler. How can this be done? Thank you in advance. Regards, Miha
Guest Gunter G. Posted June 3, 2008 Posted June 3, 2008 RE: Export users from AD Hello Miha! There are a lot of examples out there - just try Google search and you sure will find some. You just have to change them for your special needs. Best regards, Gunter "Miha" wrote: > Hi guys, > > I need a script that will export all users (with e-mail addresses) from AD > that have Exchange mailboxes into a .csv or plain text format. It needs to > be a script (not manual export) so that will run automatically with > scheduler. > How can this be done? > Thank you in advance. > Regards, > Miha > > >
Guest Allan Posted June 3, 2008 Posted June 3, 2008 Re: Export users from AD There are a number of ways to do this. Using VBScript just pull the accounts from the OU you want to or the entire domain. And get the data you want. Const ADS_SCOPE_SUBTREE = 2 Set objConnection = CreateObject("ADODB.Connection") Set objCommand = CreateObject("ADODB.Command") objConnection.Provider = "ADsDSOObject" objConnection.Open "Active Directory Provider" Set objCOmmand.ActiveConnection = objConnection objCommand.CommandText = _ "Select sAMAccountName, sn, givenName, initials, description, department, telephoneNumber, whenCreated, whenChanged, userAccountControl from 'LDAP://DC=example,DC=org' " _ & "where objectClass='user' and objectCategory='person'" objCommand.Properties("Page Size") = 2000 objCommand.Properties("Timeout") = 30 objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE objCommand.Properties("Cache Results") = False Set objRecordSet = objCommand.Execute objRecordSet.MoveFirst Do Until objRecordSet.EOF wscript.echo objRecordSet.Fields("sAMAccountName") objRecordSet.MoveNext Loop -- Just select the fields you want and echo the data the way you want. You can also just use a simple bat file with the DS commands. Look up dsquery and dsget in the examples you can see how to pipe your results. And one more way would be to use a powershell script. This may be the best option since you can easily format the output of your data. Hope that helps, Allan "Miha" <miha.bernik@email.si> wrote in message news:uQBV1JXxIHA.4864@TK2MSFTNGP06.phx.gbl... > Hi guys, > > I need a script that will export all users (with e-mail addresses) from AD > that have Exchange mailboxes into a .csv or plain text format. It needs to > be a script (not manual export) so that will run automatically with > scheduler. > How can this be done? > Thank you in advance. > Regards, > Miha >
Guest Jorge Silva Posted June 3, 2008 Posted June 3, 2008 Re: Export users from AD Hi Have a look at: http://www.computerperformance.co.uk/Logon/Logon_CSVDE.htm http://www.computerperformance.co.uk/Logon/Logon_LDIF.htm -- I hope that the information above helps you. Have a Nice day. Jorge Silva MCSE, MVP Directory Services
Guest Shay Levi Posted June 3, 2008 Posted June 3, 2008 Re: Export users from AD Hi Miha, You can get it with a one-line command if you're willing to install PowerShell and Quest's AD cmdlets: Get-QADUser -sizeLimit 0 | where {$_.Email} | select name,Email | Export-Csv mbx.csv You can download PowerShell here: http://www.microsoft.com/windowsserver2003/technologies/management/powershell/download.mspx And Quest's AD cmdlets, here: http://www.quest.com/powershell/activeroles-server.aspx --- Shay Levi $cript Fanatic http://scriptolog.blogspot.com > Hi guys, > > I need a script that will export all users (with e-mail addresses) > from AD > that have Exchange mailboxes into a .csv or plain text format. It > needs to > be a script (not manual export) so that will run automatically with > scheduler. > How can this be done? > Thank you in advance. > Regards, > Miha
Guest Richard Mueller [MVP] Posted June 3, 2008 Posted June 3, 2008 Re: Export users from AD Miha wrote: > I need a script that will export all users (with e-mail addresses) from AD > that have Exchange mailboxes into a .csv or plain text format. It needs to > be a script (not manual export) so that will run automatically with > scheduler. > How can this be done? > Thank you in advance. > Regards, > Miha As noted, you can use ADO to retrieve information from AD. See this link: http://www.rlmueller.net/ADOSearchTips.htm The user name you retrieve can be the value of the "distinguishedName" attribute or the "sAMAccountName" attribute. The later is also called the "pre-Windows 2000 logon name" (or the NT Name). The "mail" attribute is the E-mail address on the "General" tab of ADUC. However, if you use Exchange, I think you want the value of the multi-valued attribute proxyAddresses. Using the variables from the link above, the base of the search (if you want all users in the domain) could be the distinguishedName of the domain: ' Search entire Active Directory domain. Set objRootDSE = GetObject("LDAP://RootDSE") strDNSDomain = objRootDSE.Get("defaultNamingContext") strBase = "<LDAP://" & strDNSDomain & ">" To retrieve information on all users the filter would be: ' Filter on user objects. strFilter = "(&(objectCategory=person)(objectClass=user))" To restrict the query to users with Exchange email addresses I believe the filter would be: ' Filter on user objects with Exchange email addresses. strFilter = "(&(objectCategory=person)(objectClass=user)(proxyAddresses=*))" This retrieves all users that have any value(s) assigned to the proxyAddresses attribute. Finally, the list of attribute values to retrieve would be: ' Comma delimited list of attribute values to retrieve. strAttributes = "sAMAccountName,distinguishedName,proxyAddresses" I don't have Exchange so I cannot test, but the complete script could be as below. The script echos the values to the console delimited with semicolons (since distinguishedNames have embedded commas), so it can be read into a spreasheet. Run the program at a command prompt with cscript and redirect the output to a text file: ============ Option Explicit Dim adoCommand, adoConnection, strBase, strFilter, strAttributes Dim objRootDSE, strDNSDomain, strQuery, adoRecordset, strNTName, strDN Dim strLine, arrAddresses, strAddress ' Setup ADO objects. Set adoCommand = CreateObject("ADODB.Command") Set adoConnection = CreateObject("ADODB.Connection") adoConnection.Provider = "ADsDSOObject" adoConnection.Open "Active Directory Provider" adoCommand.ActiveConnection = adoConnection ' Search entire Active Directory domain. Set objRootDSE = GetObject("LDAP://RootDSE") strDNSDomain = objRootDSE.Get("defaultNamingContext") strBase = "<LDAP://" & strDNSDomain & ">" ' Filter on user objects with Exchange email addresses. strFilter = "(&(objectCategory=person)(objectClass=user)(proxyAddresses=*))" ' Comma delimited list of attribute values to retrieve. strAttributes = "sAMAccountName,distinguishedName,proxyAddresses" ' Construct the LDAP syntax query. strQuery = strBase & ";" & strFilter & ";" & strAttributes & ";subtree" adoCommand.CommandText = strQuery adoCommand.Properties("Page Size") = 100 adoCommand.Properties("Timeout") = 30 adoCommand.Properties("Cache Results") = False ' Run the query. Set adoRecordset = adoCommand.Execute ' Enumerate the resulting recordset. Do Until adoRecordset.EOF ' Retrieve values and display. strNTName = adoRecordset.Fields("sAMAccountName").Value strDN = adoRecordset.Fields("distinguishedName").value ' Construct one line of output per user. strLine = strNTName & ";" & strDN ' Add Email addresses to the output line. arrAddresses = adoRecordset.Fields("proxyAddresses").Value For Each strAddress In arrAddresses strLine = strLine & ";" & strAddress Next Wscript.Echo strLine ' Move to the next record in the recordset. adoRecordset.MoveNext Loop ' Clean up. adoRecordset.Close adoConnection.Close =========== If the VBScript program is saved in a file called GetEmail.vbs, run it at a command prompt with a command similar to: cscript //nologo GetEmail.vbs > report.txt The file report.txt is created in the current directory. It can be read into a spreadsheet, just designate the semicolon as the delimiter. -- Richard Mueller MVP Directory Services Hilltop Lab - http://www.rlmueller.net --
Guest gas Posted June 3, 2008 Posted June 3, 2008 RE: Export users from AD "Miha" wrote: > Hi guys, > > I need a script that will export all users (with e-mail addresses) from AD > that have Exchange mailboxes into a .csv or plain text format. It needs to > be a script (not manual export) so that will run automatically with > scheduler. > How can this be done? > Thank you in advance. > Regards, > Miha > or you can use dsget http://technet2.microsoft.com/WindowsServer/it/Library/46ba1426-43fd-4985-b429-cd53d3046f011040.mspx?mfr=true ::bye Gas @echo off :: usr-email.cmd :: get user list set usrlist=c:\temp\UsrList.txt type nul >%usrlist% 2>nul for /f "skip=1 tokens=1,* delims= " %%A in ('dsquery user -name * -limit 0^|dsget user -samid -email^|find "@"') do echo %%A;%%B >>%usrlist% -------------------------------------------------------------- Gastone Canali http://www.experts-exchange.com/M_292401.html --------------------------------------------------------------
Guest Mha Posted June 8, 2008 Posted June 8, 2008 Re: Export users from AD Thank you guys! Have found a comand line syntax to export all smtp addresses from AD, just what I was looking for dsquery * forestroot -scope subtree -filter "(&(mail=*)(proxyaddresses=smtp:*))" -attr proxyaddresses -limit 1000 >c:\addresses.csv Regards, Miha "gas" <gas@discussions.microsoft.com> je napisal v sporoèilo news:A10D2321-BCC9-43A1-9D54-16562C8600E8@microsoft.com ... > > "Miha" wrote: > >> Hi guys, >> >> I need a script that will export all users (with e-mail addresses) from >> AD >> that have Exchange mailboxes into a .csv or plain text format. It needs >> to >> be a script (not manual export) so that will run automatically with >> scheduler. >> How can this be done? >> Thank you in advance. >> Regards, >> Miha >> > or you can use dsget > http://technet2.microsoft.com/WindowsServer/it/Library/46ba1426-43fd-4985-b429-cd53d3046f011040.mspx?mfr=true > > ::bye Gas > @echo off > :: usr-email.cmd > :: get user list > set usrlist=c:\temp\UsrList.txt > type nul >%usrlist% 2>nul > for /f "skip=1 tokens=1,* delims= " %%A in ('dsquery user -name * -limit > 0^|dsget user -samid -email^|find "@"') do echo %%A;%%B >>%usrlist% > > -------------------------------------------------------------- > Gastone Canali > http://www.experts-exchange.com/M_292401.html > -------------------------------------------------------------- > >
Guest Jorge de Almeida Pinto [MVP - DS] Posted June 8, 2008 Posted June 8, 2008 Re: Export users from AD ADFIND -b "<DN of some starting OU>" -f "(&(objectCategory=person)(objectClass=user)(mail=*))" sAMAccountName mail ADFIND can be downloaded from joeware.net -- Cheers, (HOPEFULLY THIS INFORMATION HELPS YOU!) # Jorge de Almeida Pinto # MVP Identity & Access - Directory Services # BLOG (WEB-BASED)--> http://blogs.dirteam.com/blogs/jorge/default.aspx BLOG (RSS-FEEDS)--> http://blogs.dirteam.com/blogs/jorge/rss.aspx ------------------------------------------------------------------------------------------ * How to ask a question --> http://support.microsoft.com/?id=555375 ------------------------------------------------------------------------------------------ * This posting is provided "AS IS" with no warranties and confers no rights! * Always test ANY suggestion in a test environment before implementing! ------------------------------------------------------------------------------------------ ################################################# ################################################# ------------------------------------------------------------------------------------------ "Miha" <miha.bernik@email.si> wrote in message news:uQBV1JXxIHA.4864@TK2MSFTNGP06.phx.gbl... > Hi guys, > > I need a script that will export all users (with e-mail addresses) from AD > that have Exchange mailboxes into a .csv or plain text format. It needs to > be a script (not manual export) so that will run automatically with > scheduler. > How can this be done? > Thank you in advance. > Regards, > Miha >
Recommended Posts