Active Directory (AD) yönetimi, organizasyonlardaki IT uzmanları için vazgeçilmez bir görev olabilir. Kullanıcı yönetimi, güvenlik politikalarının uygulanması ve sistem entegrasyonu gibi birçok süreç, AD’nin etkin kullanımını gerektirir.
Bu makalede, AD kullanıcılarının isim ve soyisimlerini otomatik olarak büyük harfe çeviren ve olası null değerlerini raporlayan bir PowerShell scripti olan “ADConvertUserNametoUpper’dan bahsedeceğim.
Active Directory User Name to Upper Amacı
ADConvertUserNametoUpper, AD içerisindeki kullanıcıların GivenName
(isim) ve Surname
(soyisim) alanlarını büyük harfe çevirirken, bu alanlardan herhangi birinin boş (null) olup olmadığını kontrol eder ve bu durumları raporlar.
- Büyük Harf Dönüşümü: Kullanıcıların isim ve soyisimlerini, Türkçe karakter desteği göz önünde bulundurularak büyük harfe çevirir.
- Null Kontrolü: Isim veya soyisim alanları boş olan kullanıcıları tespit eder ve bu bilgileri kırmızı renkli uyarı mesajlarıyla raporlar.
- Script, belirli bir Organizational Unit (OU) içerisinde çalıştırılabileceği gibi tüm dizin üzerinde de uygulanabilir.
Script, Active Directory modülünü kullanarak belirtilen OU içerisinde yer alan kullanıcıları listeler. Her kullanıcı için,GivenName
veSurname
alanları kontrol edilir. Eğer bu alanlardan biri null ise, kullanıcı adı ve boş olan alan adı kırmızı bir uyarı mesajıyla konsolda gösterilir. Null olmayan alanlar ise büyük harfe çevrilir ve AD'de güncellenir.
Active Directory Convert User Name to Upper
Kendi ihtiyaçlarım için geliştirmiş olduğum Active Directory Convert User Name to Upper scriptine Github üzerinden veya aşağıda bulunan kod bloğundan erişebilirsiniz.
<#
.SYNOPSIS
Converts all user first names and last names in a specified OU to uppercase, checks for null values, and reports them.
.DESCRIPTION
This script is designed to traverse a specified Organizational Unit (OU) in Active Directory and update all user first and last names to uppercase. It checks for null values in the GivenName and Surname fields, reports these entries, and updates the fields if they are not null. The script uses Turkish culture settings for correct uppercase conversion.
.PARAMETER ouPath
Specifies the LDAP path of the Organizational Unit where the user accounts are located.
.EXAMPLE
PS> .\ADConvertUserNametoUpper.ps1 -ouPath "OU=Users,DC=example,DC=com"
.NOTES
Author: Cengiz YILMAZ
Title: Microsoft MVP - MCT
Created on: [5/9/2024]
Blog: https://yilmazcengiz.tr
Version: 1.0
.COMPONENT
Requires ActiveDirectory module.
#>
# OU Path
$ouPath = "OU=fixcloud-test.com,OU=HC-Systems,DC=fixcloud,DC=com,DC=tr"
# Retrieve all users in the OU
$users = Get-ADUser -Filter * -SearchBase $ouPath -Property GivenName, Surname, SamAccountName
# Set the Turkish culture settings
$culture = [System.Globalization.CultureInfo]::CreateSpecificCulture("tr-TR")
# Convert and update each user's first and last name according to Turkish characters
foreach ($user in $users) {
$updateNeeded = $false
# Check GivenName
if ($user.GivenName -ne $null) {
$newGivenName = $user.GivenName.ToUpper($culture)
Set-ADUser -Identity $user.SamAccountName -GivenName $newGivenName
} else {
Write-Host "GivenName değeri boş: Kullanıcı - $($user.SamAccountName)" -ForegroundColor Red
$updateNeeded = $true
}
# Check Surname
if ($user.Surname -ne $null) {
$newSurname = $user.Surname.ToUpper($culture)
Set-ADUser -Identity $user.SamAccountName -Surname $newSurname
} else {
Write-Host "Surname değeri boş: Kullanıcı - $($user.SamAccountName)" -ForegroundColor Red
$updateNeeded = $true
}
# If no update was made, report that no update was done for the user
if (-not $updateNeeded) {
Write-Host "Kullanıcı güncellendi: $($user.SamAccountName)" -ForegroundColor Green
}
}