Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Export an array with custom objects

Basically, what I'm trying to do, is to retrieve all users from Active Directory and to save them in a .csv file, using a PowerShell script. In addition, I only want the attributes "name" and "samaccountname" to be listed. So here's the code:

$strFilter = "somefilter"
$objCollection = @()

$objDomain = New-Object System.DirectoryServices.DirectoryEntry

$objSearcher = New-Object System.DirectoryServices.DirectorySearcher
$objSearcher.SearchRoot = $objDomain
$objSearcher.PageSize = 1000
$objSearcher.Filter = $strFilter
$objSearcher.SearchScope = "Subtree"

$colProplist = "name", "samaccountname"
foreach ($i in $colPropList){$objSearcher.PropertiesToLoad.Add($i)}

$colResults = $objSearcher.FindAll()

foreach ($objResult in $colResults) {
  $objItem = $objResult.Properties

  $object = New-Object PSObject
  $object | Add-Member -MemberType NoteProperty -Name Name -Value $objItem.name
  $object | Add-Member -MemberType NoteProperty -Name SAMAccountname -Value $objItem.samaccountname

  $objCollection+=$object
}

$objCollection # this gives me the output as wished
$objCollection | Export-CSV -NoTypeInformation -Path C:\temp\exportfile.csv # this doesn't work

The Console Output looks like this:

Name                                SAMAccountname
----                                --------------
{IUSR_PFTT-DC1}                     {IUSR_PFTT-DC1}
{IUSR_PFVM-DC1}                     {IUSR_PFVM-DC1}
{IUSR_PFXX-DC1}                     {IUSR_PFXX-DC1}

But the exported .csv looks like this:

"Name","SAMAccountname"
"System.DirectoryServices.ResultPropertyValueCollection","System.DirectoryServices.ResultPropertyValueCollection"
"System.DirectoryServices.ResultPropertyValueCollection","System.DirectoryServices.ResultPropertyValueCollection"
"System.DirectoryServices.ResultPropertyValueCollection","System.DirectoryServices.ResultPropertyValueCollection"
"System.DirectoryServices.ResultPropertyValueCollection","System.DirectoryServices.ResultPropertyValueCollection"

Any ideas/solutions to this?

like image 905
Michael Avatar asked Aug 08 '13 10:08

Michael


People also ask

How do I Export an array of objects?

In one file export an array with objects that refer to functions within the same file OR export a class, then access the array from within that class, referring to functions inside the class. export const settingsArray = [ { title: " ", data: [ { title: "Export data", func: this.

How do I Export Active Directory objects?

Run Netwrix Auditor → Navigate to Reports → Active Directory → Active Directory State-in-Time → Choose the report you need ('User Accounts', 'Groups', 'Computer Accounts', 'Organizational Units', etc.) → “View”. To save the file, click the "Export" button → Excel → Save as → Choose a location to save it.


2 Answers

If you want to stick with the DirectorySearcher approach, change this:

foreach ($objResult in $colResults)
    {$objItem = $objResult.Properties

        $object = New-Object PSObject
        $object | Add-Member –MemberType NoteProperty -Name Name -Value $objItem.name
        $object | Add-Member –MemberType NoteProperty -Name SAMAccountname -Value $objItem.samaccountname

        $objCollection+=$object
    }

into this:

$objCollection = $colResults | select -Expand Properties |
    select @{n='Name';e={$_.name}}, @{n='SAMAccountName';e={$_.samaccountname}}
like image 116
Ansgar Wiechers Avatar answered Oct 21 '22 21:10

Ansgar Wiechers


You can get all the user on your domain by using the Active Directory module:

import-module activedirectory
get-ADuser -filter * | select name,SamAccountName | ConvertTo-CSV | ac "C:\yourCSVFile.csv"

This will give you an output like this of all your users.

"name","SamAccountName"
"MATTHE_G","matthe_g"
"PUTINE_I","putine_i"
"COBB_C","cobb_c"
"BULL_T","bull_t"
"BAYOL_B","bayol_b"
"CAPPON_P","CAPPON_P"
....

Note: You will need to turn on the active directory windows feature to be able to use the activedirectory module. This can be found under 'Remote Sever Administration tools' tab in windows features.

Link: For Cmdlet's in the AD module

like image 44
Richard Avatar answered Oct 21 '22 20:10

Richard