Power Shell所有Active Directory用户的输出列表以及每个用户所属的所有组(csv)

时间:2016-12-05 10:53:46

标签: powershell csv active-directory

代码:

sAMAccountName               ADGroups
--------------               --------
PLXXXXX                      ADGroup1, ADGroup2, ADGroup3
CZYYYYY                      ADGroup1, ADGroup2, ADGroup3, ADGroup4
CHAAAAA                      ADGroup10, ADGroup20

本准则给我的结果如下:

#ifdef NDEBUG
#define assert(condition) ((void)0)
#else
#define assert(condition) /*implementation defined*/
#endif

有人可以修改此代码以获得类似此文件的结果吗?:

<?xml version="1.0" encoding="utf-8" ?>
<TabbedPage xmlns="http://xamarin.com/schemas/2014/forms"
            xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
            xmlns:prism="clr-namespace:Prism.Mvvm;assembly=Prism.Forms"
            xmlns:views="clr-namespace:GitRemote.Views;assembly=GitRemote"
            prism:ViewModelLocator.AutowireViewModel="True"
            x:Class="GitRemote.Views.PublicRepositoryPage"
            CurrentPage="{Binding CurrentTabPage, Mode=OneWayToSource}">

  <views:RepositoryNewsPage Title="News"/>
  <views:FileExplorerPage Title="Code"/>
  <!--<views:CommitsPage/>
  <views:PublicIssuesPage/>-->

</TabbedPage>

我也希望将它存储到CSV文件中。

问候!

1 个答案:

答案 0 :(得分:0)

最后我做到了!有很大帮助你们:)。 150k用户的表现大约是15-20分钟,这在我看来很不错。

代码是:

#Import-Module ServerManager
#Add-WindowsFeature RSAT-AD-PowerShell


#Europe
Import-Module ActiveDirectory
$users = Get-ADUser -Server europe.mycompanyname.com -Filter * -Properties MemberOf #-ResultSetSize 1000

Write-Host Found ($users.count) users from europe

$list = [System.Collections.ArrayList]@()
foreach ($user in $users) {
    $sAMAccountName = $user.samaccountname
    $groups = if ($user.MemberOf) { $user.MemberOf -replace '^CN=([^,]+),OU=.+$','$1' -join ';' | Out-String } else { '' }
    $entry = [Ordered]@{ "sAMAccountName" = $user.samaccountname; "ADGroups" = $groups;}
    $list.Add((New-Object psobject -Property $entry)) | Out-Null
}

Write-Host Processed ($list.count) users from europe

$list | Export-Csv -NoType -Encoding UTF8 -Path E:\temp\europe.csv


#NMEA

Import-Module ActiveDirectory
$users = Get-ADUser -Server nmea.mycompanyname.com -Filter * -Properties MemberOf #-ResultSetSize 1000

Write-Host Found ($users.count) users from nmea

$list = [System.Collections.ArrayList]@()
foreach ($user in $users) {
    $sAMAccountName = $user.samaccountname
    $groups = if ($user.MemberOf) { $user.MemberOf -replace '^CN=([^,]+),OU=.+$','$1' -join ';' | Out-String } else { '' }
    $entry = [Ordered]@{ "sAMAccountName" = $user.samaccountname; "ADGroups" = $groups;}
    $list.Add((New-Object psobject -Property $entry)) | Out-Null
}

Write-Host Processed ($list.count) users from nmea

$list | Export-Csv -NoType -Encoding UTF8 -Path E:\temp\nmea.csv

#ASIAPACIFIC

Import-Module ActiveDirectory
$users = Get-ADUser -Server asiapacific.mycompanyname.com -Filter * -Properties MemberOf #-ResultSetSize 1000

Write-Host Found ($users.count) users from asiapacific

$list = [System.Collections.ArrayList]@()
foreach ($user in $users) {
    $sAMAccountName = $user.samaccountname
    $groups = if ($user.MemberOf) { $user.MemberOf -replace '^CN=([^,]+),OU=.+$','$1' -join ';' | Out-String } else { '' }
    $entry = [Ordered]@{ "sAMAccountName" = $user.samaccountname; "ADGroups" = $groups;}
    $list.Add((New-Object psobject -Property $entry)) | Out-Null
}

Write-Host Processed ($list.count) users from asiapacific

$list | Export-Csv -NoType -Encoding UTF8 -Path E:\temp\asiapacific.csv

#americas

Import-Module ActiveDirectory
$users = Get-ADUser -Server americas.mycompanyname.com -Filter * -Properties MemberOf #-ResultSetSize 1000

Write-Host Found ($users.count) users from americas

$list = [System.Collections.ArrayList]@()
foreach ($user in $users) {
    $sAMAccountName = $user.samaccountname
    $groups = if ($user.MemberOf) { $user.MemberOf -replace '^CN=([^,]+),OU=.+$','$1' -join ';' | Out-String } else { '' }
    $entry = [Ordered]@{ "sAMAccountName" = $user.samaccountname; "ADGroups" = $groups;}
    $list.Add((New-Object psobject -Property $entry)) | Out-Null
}

Write-Host Processed ($list.count) users from americas
$list | Export-Csv -NoType -Encoding UTF8 -Path E:\temp\americas.csv