Архив

Archive for Август 2015

PS скрипт для выборки из AD членов групп

Зафиксирую для себя два маленьких скрипта на PowerShell для получения информации по пользователям и группам, в которые они входят.
 
Уже в двух задачах потребовалось выгрузить членство групп из AD в двух разных форматах:

  1. Выгрузить данные в формате CSV (Excel) для последующего анализа (Сводные таблицы), на выходе должно получиться:
     
    "samAccountName"; "DistinguishedName"; "objectClass"; "GroupName"
    "Administrator"; "CN=Administrator,CN=Users,DC=demo,DC=local"; "user"; "CN=Administrators,CN=Builtin,DC=demo,DC=local"
    "Enterprise Admins"; "CN=Enterprise Admins,CN=Users,DC=demo,DC=local"; "group"; "CN=Administrators,CN=Builtin,DC=demo,DC=local"
    "Domain Admins"; "CN=Domain Admins,CN=Users,DC=demo,DC=local"; "group"; "CN=Administrators,CN=Builtin,DC=demo,DC=local"
     

    Import-Module ActiveDirectory

    $results = @()
    $GA = get-adgroup -filter *
    foreach ($G in $GA) {
       $results += Get-ADGroupMember $G | select samAccountName, DistinguishedName, objectClass, @{name="GroupName";expression={$G.DistinguishedName}}
    }

    $results | Export-Csv -path ('C:\all_ad_groups_{0}-{1:yyyyMMddHHmm}.csv' -f $env:userdomain, (Get-Date)) -Encoding 'UTF8' -force -NoTypeInformation -UseCulture

     

  2. Выгрузить данные в текстовый файл в формате:
    user1; Test Group 1-1; Domain Users
     
    Есть еще нюанс, что первой в списке нужно вывести Primary Group, а после в алфавитном порядке остальные группы.
     

    Import-Module ActiveDirectory

    $results = @()
    $Users = Get-ADUser -Filter * -Properties *
    foreach ($User in $Users) {
       $GroupMembership = ($user.memberof | % { (Get-ADGroup $_).Name; } | Sort-Object) -join ';'
       $results += $User.SamAccountName + ';' + (Get-ADGroup $user.PrimaryGroup).Name + ';' + $GroupMembership
    }

    $results | out-file ('C:\all_ad_groups_delimiter_{0}-{1:yyyyMMddHHmm}.csv' -f $env:userdomain,(Get-Date))