AD kullanıcılarını PowerShell ile CSV'ye aktarın
AD kullanıcılarının bilgilerini PowerShell ile CSV'ye aktarmak istiyoruz. AD kullanıcılarını neden PowerShell ile listelememiz gerekiyor? Örneğin, her AD kullanıcısının Active Directory'de doğru cep telefonu numarasına sahip olup olmadığını bilmek istiyoruz. Bunun nedeni, hizmet masasının arama yapmadan önce Active Directory'deki bilgileri aramasıdır. Bu yazımızda Active Directory kullanıcılarını PowerShell ile CSV dosyasına nasıl aktaracağınızı öğreneceksiniz.
AD kullanıcılarının bilgilerini dışa aktarma PowerShell betiği
Export-ADUsers.ps1 PowerShell betiği, ayarladığınız distinguishedName'e karşı çalışacaktır. Bundan sonra raporu 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ı, kullanıcı başına aşağıdaki bilgileri toplayacaktır:
İlk adı
Soy isim
-
Ekran adı
Kullanıcı oturum açma adı
Kullanıcı asıl adı
Sokak
Şehir
Eyalet/il
Posta/Posta Kodu
Ülke/bölge
İş unvanı
Departman
-
Şirket
Müdür
kuruluş birimi
Tanım
Ofis
Telefon numarası
Diğer Telefon
E-posta
Mobil
Çağrı cihazı
-
Notlar
Hesap durumu
Kullanıcının oluşturulduğu tarih
Son oturum açma tarihi
PowerShell ile Active Directory kullanıcılarını CSV'ye aktarın
Adımları inceleyelim ve Active Directory kullanıcılarını PowerShell ile CSV dosyasına aktaralım.
1. Adım: Dışa aktarma AD kullanıcıları PowerShell betiğini hazırlayın
Export-ADUsers.ps1 PowerShell komut dosyasını indirip Etki Alanı Denetleyicisi C:\scripts klasörüne yerleştirin. Komut dosyaları klasörünüz yoksa bir tane oluşturun.
Komut dosyasını çalıştırırken herhangi bir hata oluşmasını ö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-ADUsers.ps1 adını verin ve C:\scripts klasörüne yerleştirin.
<#
.SYNOPSIS
Export-ADUsers.ps1
.DESCRIPTION
Export Active Directory users to CSV file.
.LINK
alitajran.com/export-ad-users-to-csv-powershell
.NOTES
Written by: ALI TAJRAN
Website: alitajran.com
LinkedIn: linkedin.com/in/alitajran
.CHANGELOG
V1.00, 05/24/2021 - Initial version
V1.10, 04/01/2023 - Added progress bar, user created date, and OU info
V1.20, 05/19/2023 - Added function for OU path extraction
#>
# Split path
$Path = Split-Path -Parent "C:\scripts\*.*"
# Create variable for the date stamp in log file
$LogDate = Get-Date -f yyyyMMddhhmm
# Define CSV and log file location variables
# They have to be on the same location as the script
$Csvfile = $Path + "\AllADUsers_$LogDate.csv"
# Import Active Directory module
Import-Module ActiveDirectory
# Function to extract OU from DistinguishedName
function Get-OUFromDistinguishedName {
param(
[string]$DistinguishedName
)
$ouf = ($DistinguishedName -split ',', 2)[1]
if (-not ($ouf.StartsWith('OU') -or $ouf.StartsWith('CN'))) {
$ou = ($ouf -split ',', 2)[1]
}
else {
$ou = $ouf
}
return $ou
}
# Set distinguishedName as searchbase, you can use one OU or multiple OUs
# Or use the root domain like DC=exoip,DC=local
$DNs = @(
"OU=Sales,OU=Users,OU=Company,DC=exoip,DC=local",
"OU=IT,OU=Users,OU=Company,DC=exoip,DC=local",
"OU=Finance,OU=Users,OU=Company,DC=exoip,DC=local"
)
# Create empty array
$AllADUsers = @()
# Loop through every DN
foreach ($DN in $DNs) {
$Users = Get-ADUser -SearchBase $DN -Filter * -Properties *
# Add users to array
$AllADUsers += $Users
# Display progress bar
$progressCount = 0
for ($i = 0; $i -lt $AllADUsers.Count; $i++) {
Write-Progress `
-Id 0 `
-Activity "Retrieving User " `
-Status "$progressCount of $($AllADUsers.Count)" `
-PercentComplete (($progressCount / $AllADUsers.Count) * 100)
$progressCount++
}
}
# Create list
$AllADUsers | Sort-Object Name | Select-Object `
@{Label = "First name"; Expression = { $_.GivenName } },
@{Label = "Last name"; Expression = { $_.Surname } },
@{Label = "Display name"; Expression = { $_.DisplayName } },
@{Label = "User logon name"; Expression = { $_.SamAccountName } },
@{Label = "User principal name"; Expression = { $_.UserPrincipalName } },
@{Label = "Street"; Expression = { $_.StreetAddress } },
@{Label = "City"; Expression = { $_.City } },
@{Label = "State/province"; Expression = { $_.State } },
@{Label = "Zip/Postal Code"; Expression = { $_.PostalCode } },
@{Label = "Country/region"; Expression = { $_.Country } },
@{Label = "Job Title"; Expression = { $_.Title } },
@{Label = "Department"; Expression = { $_.Department } },
@{Label = "Company"; Expression = { $_.Company } },
@{Label = "Manager"; Expression = { (Get-AdUser $_.Manager -Properties DisplayName).DisplayName } },
@{Label = "OU"; Expression = { Get-OUFromDistinguishedName $_.DistinguishedName } },
@{Label = "Description"; Expression = { $_.Description } },
@{Label = "Office"; Expression = { $_.Office } },
@{Label = "Telephone number"; Expression = { $_.telephoneNumber } },
@{Label = "Other Telephone"; Expression = { $_.otherTelephone -join ";"} },
@{Label = "E-mail"; Expression = { $_.Mail } },
@{Label = "Mobile"; Expression = { $_.mobile } },
@{Label = "Pager"; Expression = { $_.pager } },
@{Label = "Notes"; Expression = { $_.info } },
@{Label = "Account status"; Expression = { if (($_.Enabled -eq 'TRUE') ) { 'Enabled' } Else { 'Disabled' } } },
@{Label = "User created date"; Expression = { $_.WhenCreated } },
@{Label = "Last logon date"; Expression = { $_.lastlogondate } } |
# Export report to CSV file
Export-Csv -Encoding UTF8 -Path $Csvfile -NoTypeInformation #-Delimiter ";"Satır 54,55,56: Hedef ayırt ediciAdı düzenleyin. Bir kuruluş birimine veya birden fazla kuruluş birimine sahip olabilirsiniz (bu örnekte).
2. Adım: Ayırt edici adı 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:
Active Directory Kullanıcıları ve Bilgisayarları'nı başlatın
Hedef kuruluş birimini sağ tıklayın ve Özellikler'i tıklayın
Özellik Düzenleyici sekmesine gidin
Özellikler listesinde distuingedName özelliğini bulun
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.
3. Adım: AD kullanıcılarını dışa aktarma PowerShell betiğini çalıştırın
PowerShell'i yönetici olarak çalıştırın. komut dosyaları klasörünün yolunu değiştirin. AD kullanıcılarını 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-ADUsers.ps14. Adım: AD kullanıcıları raporu CSV dosyasını açın
Komut dosyaları klasörüne gidin ve AllADUsers_ dosyasını gördüğünüzü doğrulayın.
CSV dosyasını favori uygulamanızla açın. Örneğimizde Microsoft Excel var.
Her şey harika görünüyor!
Devamını oku: PowerShell ile kullanıcıları gruptan kaldırma »
Çözüm
PowerShell ile AD kullanıcılarını CSV'ye nasıl aktaracağınızı öğrendiniz. Her kullanıcı hesabında çok fazla bilgi vardır. PowerShell ile ihtiyaçlarınıza uygun özel bir rapora sahip olabilirsiniz.
Bu makaleyi beğendiniz mi? Ayrıca PowerShell ile Kuruluş Birimlerini Alma makalesini de beğenebilirsiniz. Bizi takip etmeyi ve bu yazımızı paylaşmayı unutmayın.


