Senaryo Örnekleri
- "Genel Müdürün asistanı tüm yönetim takvimini Editor olarak yönetsin"
- "Tüm çalışanlar birbirinin takviminde meşgul/boş görsün ama detay görmesin"
- "Pazarlama ekibi birbirinin takvim detayını görsün"
- "Yeni çalışan otomatik olarak manager'ının takvimini Reviewer alsın"
Manuel her kullanıcı için Outlook'ta ayarlamak imkansız. PowerShell tek çözüm.
Permission Türleri — Hangi Hangisi?
| AccessRights | Görür | Oluşturur | Düzenler | Siler |
| None | Hiçbir şey | — | — | — |
| FreeBusyTimeOnly | Sadece meşgul/boş | — | — | — |
| FreeBusyTimeAndSubjectAndLocation | Meşgul + konu + konum | — | — | — |
| Reviewer | Tüm detaylar (read-only) | — | — | — |
| Author | Detaylar | ✓ kendi etkinliklerini | kendi | kendi |
| Editor | Detaylar | ✓ | ✓ tüm | ✓ tüm |
| PublishingEditor | + alt klasör oluşturabilir | ✓ | ✓ | ✓ |
| Owner | Tam kontrol + permission yönetimi | ✓ | ✓ | ✓ |
Delegate vs Permission Farkı
- Permission: Kullanıcı görür/yazar ama meeting davetleri kendi adına gider.
- Delegate: Davetler gönderene "kim adına" göndererildi notu çıkar; kabul/red davetleri otomatik olarak delegate'e gelir.
"Asistan yöneticinin adına davet kabul etsin" senaryosu için Delegate gerekli.
1) Tek Kullanıcı için Permission Verme
Connect-ExchangeOnline
# Yönetici takvimini sekretere ver (Editor)
Add-MailboxFolderPermission -Identity "yonetici@firmaniz.com:\Calendar" `
-User asistan@firmaniz.com -AccessRights Editor
# Sadece meşgul/boş + konu görsün
Add-MailboxFolderPermission -Identity "yonetici@firmaniz.com:\Calendar" `
-User tumcalisanlar@firmaniz.com -AccessRights LimitedDetails
2) Mevcut Permission'ları Görüntüle
Get-MailboxFolderPermission -Identity "yonetici@firmaniz.com:\Calendar" |
Where User -ne "Default" -and User -ne "Anonymous" |
Select User, AccessRights, IsValid
3) Permission Değiştirme / Silme
# Değiştir
Set-MailboxFolderPermission -Identity "yonetici@firmaniz.com:\Calendar" `
-User asistan@firmaniz.com -AccessRights Reviewer
# Sil
Remove-MailboxFolderPermission -Identity "yonetici@firmaniz.com:\Calendar" `
-User asistan@firmaniz.com -Confirm:$false
4) Default ("herkes") Permission Değiştir
Tüm tenant kullanıcılarının default takvim görünürlüğü:
# Default = AvailabilityOnly (sadece meşgul/boş) — Microsoft'un default'u
# Tüm şirket konu+lokasyon görsün:
Set-MailboxFolderPermission -Identity "ahmet@firmaniz.com:\Calendar" `
-User Default -AccessRights LimitedDetails
# Tüm çalışanlar için toplu
Get-Mailbox -RecipientTypeDetails UserMailbox -ResultSize Unlimited | ForEach-Object {
Set-MailboxFolderPermission -Identity "$($_.PrimarySmtpAddress):\Calendar" `
-User Default -AccessRights LimitedDetails -ErrorAction SilentlyContinue
}
5) Türkçe Klasör Adı Sorunu (KRİTİK)
Outlook Türkçe profile'da takvim klasörünün kullanıcı dilinde adı olur (Calendar / Takvim / Calendrier...). PowerShell genelde "Calendar" olarak çalışır ama bazen "Takvim" gerekir.
# Kullanıcının takvim klasörünün gerçek adını öğren
Get-MailboxFolderStatistics -Identity ahmet@firmaniz.com -FolderScope Calendar |
Select Name, FolderPath
Çıktı: Name: Takvim, FolderPath: /Takvim ise:
Add-MailboxFolderPermission -Identity "ahmet@firmaniz.com:\Takvim" `
-User asistan@firmaniz.com -AccessRights Editor
Dile bağımsız çözüm — wellknown alias
$user = "ahmet@firmaniz.com"
$cal = Get-MailboxFolderStatistics -Identity $user -FolderScope Calendar |
Where FolderType -eq "Calendar" |
Select -First 1
$path = $user + ":" + $cal.FolderPath.Replace("/", "\")
Add-MailboxFolderPermission -Identity $path -User asistan@firmaniz.com -AccessRights Editor
6) Toplu Pattern: "Asistan Tüm Yönetim Takvimini Görür"
$asistan = "asistan@firmaniz.com"
$yoneticilerOU = Get-MgUser -Filter "department eq \u0027Yönetim\u0027" -All
foreach ($mgr in $yoneticilerOU) {
try {
$cal = Get-MailboxFolderStatistics -Identity $mgr.UserPrincipalName -FolderScope Calendar |
Where FolderType -eq "Calendar" | Select -First 1
$path = $mgr.UserPrincipalName + ":" + $cal.FolderPath.Replace("/", "\")
# Mevcut izin var mı kontrol
$existing = Get-MailboxFolderPermission -Identity $path -User $asistan -ErrorAction SilentlyContinue
if ($existing) {
Set-MailboxFolderPermission -Identity $path -User $asistan -AccessRights Editor
} else {
Add-MailboxFolderPermission -Identity $path -User $asistan -AccessRights Editor
}
Write-Host "✓ $($mgr.UserPrincipalName)"
} catch {
Write-Warning "$($mgr.UserPrincipalName): $($_.Exception.Message)"
}
}
7) Delegate Atama (Davetleri Asistana Yönlendir)
Set-MailboxFolderPermission -Identity "yonetici@firmaniz.com:\Calendar" `
-User asistan@firmaniz.com -AccessRights Editor `
-SharingPermissionFlags Delegate, CanViewPrivateItems
# Yöneticinin gelen davetleri asistana yönlendir
Set-CalendarProcessing -Identity yonetici@firmaniz.com `
-ResourceDelegates @{Add="asistan@firmaniz.com"} `
-ForwardRequestsToDelegates $true
8) Şirket Genelinde "FreeBusy + Konu" — Outlook Yanıtlama Hızlanır
Default Microsoft 365: tüm tenant kullanıcıları birbirinin "AvailabilityOnly" görür. Ama "Konu" görmez — meeting planlamak zor olur. Çözüm: tüm mailbox'lar için Default = LimitedDetails.
$mailboxes = Get-Mailbox -RecipientTypeDetails UserMailbox -ResultSize Unlimited
$count = 0
foreach ($m in $mailboxes) {
try {
$cal = Get-MailboxFolderStatistics -Identity $m.PrimarySmtpAddress -FolderScope Calendar |
Where FolderType -eq "Calendar" | Select -First 1
$path = $m.PrimarySmtpAddress + ":" + $cal.FolderPath.Replace("/", "\")
Set-MailboxFolderPermission -Identity $path -User Default -AccessRights LimitedDetails -ErrorAction Stop
$count++
} catch {
Write-Warning "$($m.PrimarySmtpAddress) atlandı: $_"
}
}
Write-Host "$count mailbox güncellendi."
9) Etiketleri Görme (Categories)
"Toplantı kategorisini görmek istiyorum" — bunun için Reviewer şart, LimitedDetails yetmez.
10) Audit — "Kim Kimin Takvimine Erişti?"
Search-UnifiedAuditLog `
-StartDate (Get-Date).AddDays(-7) -EndDate (Get-Date) `
-Operations FolderBind -ResultSize 5000 |
Where { ($_.AuditData | ConvertFrom-Json).Folder.Path -like "*Calendar*" } |
Select CreationDate, UserIds,
@{n="MailboxOwner";e={($_.AuditData | ConvertFrom-Json).MailboxOwnerUPN}}
SSS
Permission değişikliği ne zaman aktif olur?
Anında — ama Outlook client'ında 5-30 dk cache'lenir. OWA'da hemen test edilebilir.
Editor mü, Delegate mi?
Sadece "görüntüleme + düzenleme" için Editor. Davetlerin asistana gelmesi gerekiyorsa Delegate.
"Default" değiştirince eski izinler etkilenir mi?
Hayır — Default sadece "specific user permission verilmemiş herkesi" kapsar. Spesifik izinler ayrı işler.
Konu/lokasyon görsün ama özel etkinlikler değil?
Outlook'ta etkinliği "Private" işaretle. LimitedDetails veren kişi private etkinlikleri görmez (sadece meşgul olarak).
Birden fazla takvim klasörü olan kullanıcı?
Get-MailboxFolderStatistics tüm calendar tipi klasörleri listeler. Her birine ayrı permission ekle.
Calendar permission setup için bize ulaşın → 100+ kullanıcılı şirketlerde 1 saatlik toplu yapılandırma servisi.