PowerShell AD Kullanıcı Oluşturma ve Mailbox Atama (Tam Otomasyon)

7 Min Read
powershell ad kullanıcı oluşturma

PowerShell AD Kullanıcı Oluşturma Neden Önemli?

Kurumsal yapılarda powershell ad kullanıcı oluşturma süreçlerini otomatikleştirmek, hem zamandan tasarruf sağlar hem de insan hatasını minimuma indirir. Yeni işe başlayan bir çalışan için BT ekibinin yapması gereken işlemler oldukça fazladır: Active Directory hesabı açma, OU’ya taşıma, Exchange mailbox oluşturma, Office 365 lisansı atama, Teams üyeliği ekleme ve OneDrive provisioning gibi adımlar manuel yapıldığında zaman alır. PowerShell ile bu süreci tek bir script ile tamamen otomatik hale getirmek mümkündür.

Bu yazıda AD kullanıcı oluşturma, Office 365 lisans atama, Exchange mailbox kurma, OneDrive provisioning ve Teams grup otomasyonu gibi işlemleri tek bir script içinde birleştiren kurumsal seviye bir otomasyon anlatılmaktadır.

Kurumsal Hesap Oluşturmayı Tamamen Otomatik Hale Getirme

Yeni işe başlayanlar için BT ekiplerinin yaptığı işlemler oldukça fazladır:

  • AD hesabı oluşturma

  • OU’ya taşıma

  • Parola verme

  • Office 365 lisansı atama

  • Mailbox oluşturma

  • OneDrive provisioning

  • Teams’e kullanıcı ekleme veya yeni Teams grubu oluşturma

  • Yöneticilere bilgilendirme maili gönderme

Bu makalede tüm bu işlemleri tek bir script ile, tamamen otomatik hale getiriyoruz.

Bu kurumsal otomasyon;
Helps Desk süresini %80 azaltır,
kullanıcı onboarding sürecini standardize eder,
hataları ortadan kaldırır.

PowerShell AD Kullanıcı Oluşturma İçin Gereksinimler

Aşağıdaki modüller kurulu olmalıdır:

  • Active Directory RSAT modülü

  • AzureAD PowerShell

  • Microsoft Graph (Teams + OneDrive)

  • Exchange Online Management

Yeni kullanıcı bilgileri ise CSV dosyasından otomatik okunur.

Ön Gereksinimler

✔ AD Modülü

Install-WindowsFeature RSAT-AD-PowerShell

✔ Azure AD / MS Graph Modülleri

Install-Module AzureAD
Install-Module Microsoft.Graph.Users
Install-Module Microsoft.Graph.Teams
Install-Module Microsoft.Graph.Files

✔ Exchange Online Modülü

Install-Module ExchangeOnlineManagement

✔ CSV Dosyası

NewUsers.csv



FirstName,LastName,Department,Title,Username,OU,License,TeamsGroup
Ahmet,Yılmaz,IT,System Administrator,ahmet.yilmaz,"OU=Users,OU=Istanbul,DC=tolgaceyhan,DC=com",E3,IT-Departmani
Elif,Kara,Finance,Accountant,elif.kara,"OU=Users,OU=Ankara,DC=tolgaceyhan,DC=com",E1,Muhasebe

PowerShell AD Kullanıcı Oluşturma ve Mailbox Atama (OneDrive + Teams Dahil)

Aşağıdaki script;
✔ Active Directory hesabı oluşturur
✔ OU’ya taşır
✔ Rastgele parola verir
✔ Azure AD üzerinden Office 365 lisansı atar
✔ Exchange Online mailbox açar
✔ OneDrive provisioning yapar
✔ Teams grubuna kullanıcı ekler
✔ Yöneticilere otomatik bilgilendirme e-posta gönderir

Bu script, powershell ad kullanıcı oluşturma otomasyonu için kurumsal seviyede en kapsamlı çözümlerden biridir.



<#
.SYNOPSIS
AD Kullanıcı Oluşturma + O365 Lisans + Exchange Mailbox + OneDrive Provisioning + Teams Otomasyonu + Mail Bildirimi
.DESCRIPTION
CSV’den bilgileri okuyarak kurumsal onboarding sürecini tamamen otomatik hale getirir.
#># ----------------------------
# AYARLAR
# ----------------------------

$CsvPath = "C:\Scripts\NewUsers.csv"
$LogFile = "C:\Scripts\Logs\UserCreation_$(Get-Date -Format yyyyMMdd).log"

$Domain = "tolgaceyhan.com"

# Bildirim mail adresleri
$NotifyEmails = @(
"it@tolgaceyhan.com",
"admin@tolgaceyhan.com"
)

# SMTP Ayarları (dilersen O365'e göre değiştirebilirim)
$SMTPServer = "smtp.tolgaceyhan.com"
$SMTPPort = 587
$SMTPUser = "noreply@tolgaceyhan.com"
$SMTPPass = "BurayaSifreGirin!"

# Lisans eşleşmeleri
$LicenseMap = @{
"E3" = "tolgaceyhan:ENTERPRISEPACK"
"E1" = "tolgaceyhan:STANDARDPACK"
}

# ----------------------------
# LOG FONKSİYONU
# ----------------------------
function Write-Log {
param([string]$Message)
$Time = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
"$Time - $Message" | Out-File -FilePath $LogFile -Append
}

# ----------------------------
# BAĞLANTILAR
# ----------------------------
Write-Log "Azure AD bağlantısı kuruluyor..."
Connect-AzureAD

Write-Log "Exchange Online bağlantısı kuruluyor..."
Connect-ExchangeOnline

Write-Log "Microsoft Graph bağlantısı kuruluyor..."
Connect-MgGraph -Scopes "User.ReadWrite.All","Group.ReadWrite.All","Team.ReadWrite.All","Files.ReadWrite.All"
Select-MgProfile -Name "beta"

# ----------------------------
# KULLANICI OLUŞTURMA
# ----------------------------
$Users = Import-Csv $CsvPath

foreach ($u in $Users) {

try {
Write-Log "Kullanıcı oluşturma başlatıldı: $($u.FirstName) $($u.LastName)"

# Parola oluştur
$Password = [System.Web.Security.Membership]::GeneratePassword(12,2)
$SecurePassword = ConvertTo-SecureString $Password -AsPlainText -Force

# AD kullanıcı oluştur
New-ADUser `
-Name "$($u.FirstName) $($u.LastName)" `
-SamAccountName $u.Username `
-UserPrincipalName "$($u.Username)@$Domain" `
-GivenName $u.FirstName `
-Surname $u.LastName `
-Title $u.Title `
-Department $u.Department `
-Path $u.OU `
-AccountPassword $SecurePassword `
-Enabled $true

Write-Log "AD hesabı oluşturuldu: $($u.Username)"

Start-Sleep -Seconds 10 # Replikasyon bekleme

# Azure AD User
$AzureUser = Get-AzureADUser -ObjectId "$($u.Username)@$Domain"

# Lisans atama
if ($LicenseMap.ContainsKey($u.License)) {
$Sku = $LicenseMap[$u.License]
Set-AzureADUserLicense -ObjectId $AzureUser.ObjectId `
-AssignedLicenses @{AddLicenses=@($Sku);RemoveLicenses=@()}

Write-Log "Lisans atandı: $($u.License)"
}

# Exchange mailbox oluştur
Enable-Mailbox -Identity "$($u.Username)@$Domain"
Write-Log "Mailbox oluşturuldu."

# ----------------------------
# OneDrive Provisioning
# ----------------------------
Write-Log "OneDrive provisioning yapılıyor..."
Request-SPOPersonalSite -UserEmails "$($u.Username)@$Domain"
Write-Log "OneDrive oluşturma isteği gönderildi."

# ----------------------------
# Teams grup yönetimi
# ----------------------------

if ($u.TeamsGroup -ne "") {

Write-Log "Teams grubu işleniyor: $($u.TeamsGroup)"

# Grup var mı kontrol et
$Group = Get-MgGroup -Filter "displayName eq '$($u.TeamsGroup)'"

if (!$Group) {
Write-Log "Teams grubu bulunamadı. Yeni grup oluşturuluyor..."

$Group = New-MgGroup `
-DisplayName $u.TeamsGroup `
-MailEnabled $false `
-MailNickname $u.TeamsGroup.Replace(" ","") `
-SecurityEnabled $true
}

# Kullanıcıyı gruba ekle
New-MgGroupMember -GroupId $Group.Id -DirectoryObjectId $AzureUser.ObjectId
Write-Log "Kullanıcı Teams grubuna eklendi."
}

# ----------------------------
# BİLDİRİM MAILİ
# ----------------------------
$Subject = "Yeni Kullanıcı Oluşturuldu: $($u.FirstName) $($u.LastName)"
$Body = @"
Yeni kullanıcı başarıyla oluşturuldu:

Ad Soyad :

$($u.FirstName) $($u.LastName)
Kullanıcı : $($u.Username)
UPN : $($u.Username)@$Domain
Departman : $($u.Department)
Title : $($u.Title)
Lisans : $($u.License)
Teams : $($u.TeamsGroup)
OneDrive : Provision edildi
Parola : $Passwordtolgaceyhan.com – Otomasyon Yönetim Sistemi
"@

foreach ($Email in $NotifyEmails) {
Send-MailMessage `
-From $SMTPUser `
-To $Email `
-Subject $Subject `
-Body $Body `
-SmtpServer $SMTPServer `
-UseSsl `
-Credential (New-Object pscredential($SMTPUser,(ConvertTo-SecureString $SMTPPass -AsPlainText -Force))) `
-Port $SMTPPort

Write-Log "Bildirim gönderildi: $Email"
}

Write-Log "Kullanıcı tamamlandı: $($u.Username)"
Write-Log "------------------------------"

} catch {
Write-Log "HATA: $($_.Exception.Message)"
}
}

Write-Log "Tüm işlemler başarıyla tamamlandı."

Kullanıcı Oluşturma Sonrası OneDrive ve Teams Otomasyonu

OneDrive provisioning işlemi ile kullanıcıya ait kişisel bulut alanı otomatik oluşturulur.
Teams otomasyonu sayesinde kullanıcı ait olduğu departman grubuna kendiliğinden dahil edilir.
Bu özellikler onboarding sürecini hızlandırır ve BT ekiplerinin iş yükünü azaltır.

Script’in Sunduğu Otomasyon Özeti

İşlem Durum
AD kullanıcı oluşturma
Parola üretme
OU’ya yerleştirme
O365 lisans atama
Exchange mailbox
OneDrive provisioning
Teams grup oluşturma / üye ekleme
Yöneticilere otomatik mail gönderme
Detaylı log kaydı

Bu makalede, powershell ad kullanıcı oluşturma sürecinin nasıl tam otomasyona dönüştürüldüğünü detaylı şekilde inceledik. AD hesabı oluşturma, lisans atama, mailbox provisioning, Teams ve OneDrive işlemlerinin tek bir script ile yapılması hem operasyonel hız sağlar hem de hata riskini azaltır. Büyük kurumsal yapılarda bu tür otomasyonlar standart haline getirilmelidir.

Daha Önce hazırlamış olduğum bazı powershell script konulu yazılar:

PowerShell ile Active Directory Kullanıcılarını CSV’ye Aktarma

PowerShell ile Sistem Envanteri ve Raporlama

PowerShell ile GPO Yönetimi

Detaylı Bİlgi İçin Microsoft Dökümanları:

Bu makaleyi paylaş
Takip et:
Tolga CEYHAN, bilgi teknolojilerini severek takip eder ve BT üzerine hali hazırda aktif olarak çalışmaktadır. 2006 yılından 2017 yılına kadar web tasarım yazılım üzerine çalışmalar yaptım. Şuan ise Windows Sistem ve Sistem Güvenliği alanında çalışmalarımı sürdürmekteyim.
Yorum Yap

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Exit mobile version