AD grubu üyelerini PowerShell ile dışarı aktarma


Bazen Active Directory grup üyelerini CSV dosyasına aktarmak isteyebilirsiniz. Örneğin, tüm AD grubu üyelerini, yalnızca belirli bir kuruluş birimini veya birden çok grubu dışa aktarmanız gerekir. Bu makalede, AD grubu üyeliğini PowerShell ile CSV dosyasına nasıl aktaracağınızı öğreneceksiniz.

giriiş

Export-ADGroupMembers.ps1 PowerShell betiği, ayarladığınız distinguishedName'e karşı çalışacaktır. Bundan sonra üyeler de dahil olmak üzere AD gruplarını CSV dosyasına aktaracaktır. CSV dosyasını Microsoft Excel veya CSV dosya uzantısını destekleyen başka bir uygulamayla açabilirsiniz.

Komut dosyası aşağıdaki bilgileri dışa aktaracaktır:

  1. İsim

  2. Kategori

  3. Kapsam

  4. Üyeler

Not: Export-ADGroupMembers.ps1 PowerShell betiği, bir Active Directory grubunun üyelerini alır. Üyeler kullanıcılar, gruplar ve bilgisayarlar olabilir.

Active Directory grup üyeleri PowerShell betiğini dışarı aktarma

Başlamadan önce dosyaları doğru yere yerleştirmek istiyorsunuz. Yönetim Sunucusunun veya Etki Alanı Denetleyicisinin (C:) sürücüsünde Scripts ve Temp adında iki klasör oluşturmanızı öneririz.

Export-ADGroupMembers.ps1 PowerShell betiğini indirip C:\Scripts klasörüne yerleştirin.

Komut dosyasını çalıştırırken hataları önlemek için dosyanın engellemesinin kaldırıldığından emin olun. PowerShell betiğini çalıştırırken dijital olarak imzalanmamış hata makalesinde daha fazlasını okuyun.

Diğer bir seçenek de aşağıdaki kodu kopyalayıp Not Defteri'ne yapıştırmaktır. Ona Export-ADGroupMembers.ps1 adını verin ve C:\scripts klasörüne yerleştirin.

<#
    .SYNOPSIS
    Export-ADGroupMembers.ps1

    .DESCRIPTION
    Export Active Directory group members to CSV file.

    .LINK
    www.alitajran.com/export-ad-group-members-powershell

    .NOTES
    Written by: ALI TAJRAN
    Website:    www.alitajran.com
    LinkedIn:   linkedin.com/in/alitajran

    .CHANGELOG
    V1.00, 03/22/2022 - Initial version
    V2.00, 03/25/2023 - Added extract contacts and groups + optimization for faster results
#>

# Get year and month for CSV export file
$DateTime = Get-Date -f "yyyyMMddhhmm"

# Set CSV file name
$CSVFile = "C:\temp\ADGroups_" + $DateTime + ".csv"

# Set distinguishedName as searchbase, you can use one DN or multiple DNs
# Or use the root domain like DC=exoip,DC=local
$DNs = @(
    "DC=exoip,DC=local"
)

# Create empty array for CSV data
$CSVOutput = @()

# Create empty array for AD groups
$ADGroups = @()

# Loop through DNs
foreach ($DN in $DNs) {

    # Add every DN to AD groups
    $ADGroups += Get-ADGroup -Filter * -SearchBase $DN
}

# Set progress bar variables
$i = 0
$tot = $ADGroups.count

foreach ($ADGroup in $ADGroups) {

    # Set up progress bar
    $i++
    $status = "{0:N0}" -f ($i / $tot * 100)
    Write-Progress -Activity "Exporting AD Groups" -status "Processing Group $i of $tot : $status% Completed" -PercentComplete ($i / $tot * 100)

    # Ensure Members variable is empty
    $Members = ""

    # Get group members which are also groups and add to string
    $MembersArr = (Get-ADGroup -filter { Name -eq $ADGroup.Name } -Properties Members ).Members | Get-ADObject | select Name, objectClass, distinguishedName
    if ($MembersArr) {
        foreach ($Member in $MembersArr) {
            $MemDN = $Member.distinguishedName
            $UserObj = Get-ADUser -filter { DistinguishedName -eq $MemDN }
            if ($UserObj.Enabled -eq $False) {
                continue
            }
            if ($Member.objectClass -eq "user") {
                $Members = $Members + ",U-" + $Member.Name
            }
            elseif ($Member.objectClass -eq "contact") {
                $Members = $Members + ",C-" + $Member.Name
            }
            else {
                $Members = $Members + ",G-" + $Member.Name
            }
        }
        # Check for members to avoid error for empty groups
        if ($Members) {
            $Members = $Members.Substring(1, ($Members.Length) - 1)
        }
    }

    # Set up hash table and add values
    $HashTab = $null
    $HashTab = [ordered]@{
        "Name"     = $ADGroup.Name
        "Category" = $ADGroup.GroupCategory
        "Scope"    = $ADGroup.GroupScope
        "Members"  = $Members
    }

    # Add hash table to CSV data array
    $CSVOutput += New-Object PSObject -Property $HashTab
}

# Export report to CSV file
$CSVOutput | Sort-Object Name | Export-Csv -Encoding UTF8 -Path $CSVFile -NoTypeInformation #-Delimiter ";"
  • Satır 30: Hedef ayırt ediciAdı düzenleyin. Bir DN'niz veya birden fazla DN'niz olabilir (bununla ilgili daha fazla bilgiyi aşağıda farklı örneklerle bulabilirsiniz).

Ayırt edici bir isim alın

Ayırt edici ad değerini PowerShell betiğine eklemeniz gerekir. Active Directory'de ayırt edici adı almak için aşağıdaki adımları izleyin:

  1. Active Directory Kullanıcıları ve Bilgisayarları'nı başlatın

  2. Hedefi sağ tıklayın ve Özellikler'i tıklayın

  3. Özellik Düzenleyici sekmesine gidin

  4. Özellikler listesinde distuingedName özelliğini bulun

  5. Dizeyi açmak için çift tıklayın ve değeri kopyalayın

Not: Özellik Düzenleyicisi sekmesini görmüyorsanız, Görünüm'deki menü çubuğundaki Active Directory Kullanıcıları ve Bilgisayarları'nı tıklayın ve <'yi etkinleştirinGelişmiş Özellikler.

AD grubu üyelerini CSV'ye aktar

PowerShell'i yönetici olarak çalıştırın. Komut dosyaları klasörünün yolunu değiştirin. AD grubu üyelerini CSV dosyasına aktarmak için PowerShell betiğini çalıştırın. Tamamlanana kadar bekleyin.

PS C:\> cd c:\scripts
PS C:\scripts> .\Export-ADGroupMembers.ps1

Komut dosyaları klasörüne gidin ve ADGroups_ dosyasını gördüğünüzü doğrulayın. CSV dosyasını favori uygulamanızla açın. Örneğimizde Microsoft Excel var.

OU'daki AD grubu üyelerini dışa aktar

Kuruluş birimi ayırt edici adını alın ve satır 30'u değiştirin. Örneğimizde bu, kuruluş birimi Grupları'dır.

"OU=Groups,OU=Company,DC=exoip,DC=local"

Birden çok kuruluş birimindeki AD grubu üyelerini dışarı aktarma

Kuruluş birimlerinin ayırt edici Adını alın ve satır 30'u değiştirin. Örneğimizde. Gruplar1 ve Gruplar2 kuruluş birimleridir.

"OU=Groups1,OU=Company,DC=exoip,DC=local",
"OU=Groups2,OU=Company,DC=exoip,DC=local"

Belirli bir gruptaki AD grubu üyelerini dışa aktar

Grubun ayırt edici adını alın ve satır 30'u değiştirin. Örneğimizde bu, Pilot grubudur.

"CN=Pilot,OU=Groups,OU=Company,DC=exoip,DC=local"

AD grubu üyelerini birden fazla grupta dışa aktarın

Grupların ayırt edici Adını alın ve satır 30'u değiştirin. Örneğimizde Pilot ve İK gruplarıdır.

"CN=Pilot,OU=Groups,OU=Company,DC=exoip,DC=local",
"CN=HR,OU=Groups,OU=Company,DC=exoip,DC=local"

Bu, AD grubu üyeliğini CSV'ye aktarmanıza yardımcı oldu mu?

Devamını oku: Üyeleri bir AD grubundan diğerine kopyalama »

Çözüm

PowerShell ile AD grubu üyelerini CSV'ye nasıl aktaracağınızı öğrendiniz. Her kuruluşta çok sayıda grup vardır ve bunları CSV dosyasına aktarmak mükemmeldir. PowerShell betiğiyle hangi Active Directory gruplarını dışa aktarmak istediğinizi seçebilirsiniz.

Bu makaleyi beğendiniz mi? Ayrıca dağıtım grubu üyelerini PowerShell ile CSV'ye aktarma seçeneğini de beğenebilirsiniz. Bizi takip etmeyi ve bu yazımızı paylaşmayı unutmayın.

İlgili makaleler