Eski Modül Öldü — Hangisini Kullanmalı?
| Modül | Durum (2026) |
| MSOnline | DEPRECATED — Mart 2024'te yetkilendirme kapandı |
| AzureAD / AzureADPreview | DEPRECATED — Mart 2024'te kapandı |
| Microsoft.Graph | ✓ Önerilen (Azure AD/Entra için) |
| ExchangeOnlineManagement (V3) | ✓ Exchange Online için tek doğru |
1) Modülü Kurma
PowerShell 7'yi yönetici olarak açın (Win11'de pwsh). Eski 5.1 da çalışır ama 7 önerilir.
Install-Module -Name ExchangeOnlineManagement -Scope CurrentUser -Force
Update-Module -Name ExchangeOnlineManagement
2) İlk Bağlantı (MFA Destekli, Modern Auth)
Connect-ExchangeOnline -UserPrincipalName admin@firmaniz.com -ShowBanner:$false
Tarayıcı popup'ı açılır → Microsoft 365 admin hesabınız + MFA → onay. Sonra:
Get-ConnectionInformation
Bağlantı bilgilerini gösterir.
Otomasyon (Script) İçin Sertifika Tabanlı Bağlantı
Cron / scheduled task içinde MFA popup'ı çıkmasın diye Entra ID'de App Registration + sertifika oluşturun:
Connect-ExchangeOnline `
-AppId "00000000-0000-0000-0000-000000000000" `
-CertificateThumbprint "ABC123..." `
-Organization "firmaniz.onmicrosoft.com"
3) Bağlantıyı Kapatma
Disconnect-ExchangeOnline -Confirm:$false
Önemli — açık bağlantılar 1 saat sonra otomatik kapanır ama elle yapmak iyi pratik.
10 En Çok Kullanılan Komut
1. Tüm posta kutularını listele
Get-EXOMailbox -ResultSize Unlimited |
Select DisplayName, UserPrincipalName, RecipientTypeDetails |
Export-Csv .\mailboxes.csv -NoTypeInformation -Encoding UTF8
EXO ön ekli komutlar yeni REST API tabanlı — eskiye göre 10x hızlı.
2. Posta kutusu boyutu raporu
Get-EXOMailbox -ResultSize Unlimited |
Get-EXOMailboxStatistics |
Select DisplayName, ItemCount,
@{n="SizeMB";e={[math]::Round(($_.TotalItemSize.Value.ToBytes()/1MB),0)}} |
Sort SizeMB -Descending |
Export-Csv .\size_report.csv -NoTypeInformation
3. Belirli kullanıcıya tam erişim ver (Full Access)
Add-MailboxPermission -Identity info@firmaniz.com `
-User ahmet@firmaniz.com -AccessRights FullAccess -InheritanceType All
Add-RecipientPermission -Identity info@firmaniz.com `
-Trustee ahmet@firmaniz.com -AccessRights SendAs -Confirm:$false
4. Otomatik yanıt (out of office) toplu kur
Set-MailboxAutoReplyConfiguration -Identity ayse@firmaniz.com `
-AutoReplyState Scheduled `
-StartTime "2026-07-15 09:00" -EndTime "2026-07-29 09:00" `
-InternalMessage "Yıllık iznimdeyim, Mehmet'e yönlendirin." `
-ExternalMessage "I am on vacation, please contact mehmet@firmaniz.com"
5. Ortak posta kutusu (Shared Mailbox) oluştur
New-Mailbox -Shared -Name "Bilgi" -DisplayName "Bilgi Hattı" `
-PrimarySmtpAddress info@firmaniz.com
6. Dağıtım listesine üye ekle
Add-DistributionGroupMember -Identity tumcalisanlar@firmaniz.com `
-Member yenicalisan@firmaniz.com
7. Mail forward (yönlendirme) — silinmiş çalışan için
Set-Mailbox -Identity eski@firmaniz.com `
-ForwardingSmtpAddress yeni@firmaniz.com -DeliverToMailboxAndForward $true
8. Litigation Hold etkinleştir (KVKK / dava saklama)
Set-Mailbox -Identity ahmet@firmaniz.com `
-LitigationHoldEnabled $true `
-LitigationHoldDuration 2555 # 7 yıl, gün cinsinden
9. Belirli kullanıcının son 30 gündeki gönderilerini ara
Search-Mailbox -Identity ahmet@firmaniz.com `
-SearchQuery 'Subject:"fatura" AND Sent:>=01/01/2026' `
-TargetMailbox audit@firmaniz.com `
-TargetFolder "Audit-Ahmet" -LogLevel Full
Search-Mailbox 2025'te deprecated — yenisi: Compliance Search (New-ComplianceSearch).
10. Mesaj izleme (mail nereye gitti?)
Get-MessageTrace -SenderAddress ahmet@firmaniz.com `
-StartDate (Get-Date).AddDays(-7) -EndDate (Get-Date) |
Select Received, SenderAddress, RecipientAddress, Subject, Status
10 günden eski için Get-HistoricalSearch kullanılır.
Hata Çözümü: "AADSTS50034" / "Connect-ExchangeOnline failed"
- UPN'yi tam yazın:
admin@firmaniz.com — sadece admin yazma
- Tenant'ta Exchange Online lisanslı admin kullanıcısı olmalı (Global Admin tek başına yetmez)
- Conditional Access engeli: trusted location veya MFA exception kontrol
- Eski TLS:
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
SSS
PowerShell ISE çalışıyor mu?
Modül teknik olarak kurulur, ama V3 REST komutları (EXO ön ekli) bazen ISE'de hata verir. VSCode + PowerShell extension önerilir.
Saatlik bağlantı limiti var mı?
Evet — saatte 3 paralel oturum, 24 saatte 5000 cmdlet çağrısı. Kurumsal otomasyon için throttling ile bekleme şart.
Get-Mailbox vs Get-EXOMailbox farkı?
Get-EXOMailbox V3 REST API tabanlı, 10x hızlı, -Properties ile kontrolü daha iyi. Yeni script'lerde her zaman EXO komutlarını kullanın.
MFA olmadan bağlanabilir miyim?
Hayır — Microsoft Mart 2024'ten beri "Security Defaults" ile basic auth tüm tenant'larda kapalı. App + sertifika tek alternatif.
Dağıtım grupları için Microsoft Graph mi, Exchange PowerShell mi?
Microsoft 365 Group → Graph. Distribution List (DL) → Exchange Online PowerShell. Klasik DL'leri Graph yönetemez.
Exchange Online yönetimi için danışmanlık → Script kütüphanesi + uzaktan destek paketleri.
İlgili rehber: Rol bazlı adresler için (destek@, info@) Paylaşılan Posta Kutusu (Shared Mailbox) Kurulum Rehberi'ne göz atın. Lisansız 50 GB, Full Access vs Send As farkı, PowerShell ile toplu izin yönetimi, çıkan çalışan dönüşümü detaylı.
Sorunu Çözmek İçin Zaman Harcamak İstemiyor musun?
SLA'lı Hizmet
Bu rehberdeki adımlar her zaman işe yaramayabilir; bazen Microsoft 365 tenant'ında yönetici müdahalesi veya bir uzmanın bağlanması gerekir. KOBİ Başlangıç paketimiz (5-25 kullanıcı) ortalama 4 saatte ticket yanıtı, Standart ise sınırsız ticket + telefon desteği sunar. Aylık abonelik, tek seferlik fatura tuzağı yok.
Başlangıç · 5-25 kullanıcı
Standart · 25-100 · En Popüler
Premium · 100+ · 7/24 + TAM