124611
Goto Top

Exchange 2013 powershell Berechtigung von Unterordnern in Outlook 2010 steuern

Guten Tag,

ich möchte gerne den Posteingang eines Mitarbeiters A für einen anderen Mitarbeiter B freischalten per Powershellscript.

Da der Mitarbeiter B dauerhaft auf den Posteingang des anderen Mitarbeiters A Zugriff haben soll, habe ich zusätzliche Berechtigungen direkt auf das Postfach des Mitarbeiters A gesetzt, damit sich Mitarbeiter B den Posteingang auch fest in sein Outlook eintragen kann.

Das Skript dafür schaut so aus:

# Laden des ActiveDirectoryModuls
Import-Module ActiveDirectory

# Ermitteln des Exchangenamens über das AD
$exchange_server = Get-ADObject -LDAPFilter 'objectClass=msExchExchangeServer' -SearchBase (([ADSI]"LDAP://RootDse").configurationNamingContext.ToString()) -Properties networkaddress | select -Expand networkaddress | ?{$_ -match 'ncacn_ip_tcp'} | %{$_.split(":")[1]} | select -First 1  
if (!$exchange_server){Write-Host "Could not determine Exchange Server from AD" -ForegroundColor Red; return}  

# Verbindung zum Exchange herstellen
$session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri "http://$exchange_server/powershell" -Authentication Kerberos  
Import-PSSession $session -DisableNameChecking -AllowClobber | out-null

#Abfrage von/nach Postfach und Berechtigungsstufe
$mailbox = read-host "Postfach"  
$folder = read-host "Postfach Ordner"  
$user = read-host "Benutzer"  
$berechtigung = read-host "Berechtigung"  

#Durchführen des oben genannten Auftrags 
$mailboxfolders = Get-MailboxFolderStatistics $mailbox | Where {$_.FolderPath -match $folder}
foreach ($mailboxfolder in $mailboxfolders)
{
$folderid = $mailboxfolder.folderpath.replace("/","\")  
$folderid = "$mailbox" + ":" + "$folderid"  
Add-MailboxFolderPermission $folderid -User $user -AccessRights $berechtigung
}

#Berechtigungen auf das Postfach setzten
Add-MailboxFolderPermission –Identity $mailbox –User $user –AccessRights Contributor

#Berechtigungen vom Ordner "Privat" löschen 
Remove-MailboxFolderPermission $mailbox("\inbox\privat") -User $user #-Confirm:$false  

#Berechtigung auslesen
Get-MailboxFolderPermission $mailbox -User $user



Das Problem ist, dass mein Skript auch alle Unterordner vom Posteingang mit Berechtigungen versieht. Dies soll es aber gar nicht!
Z.B. hat jeder Mitarbeiter einen Ordner welcher sich "PRIVAT" nennt, dieser darf auf gar keinen Fall zu Einsicht berechtigt werden.

Hat von Euch jemand einen Tipp wie ich es verhindern kann, dass das Skript alle Unterordner vom Posteingang mit berechtigt oder weiß jemand wie ich die Berechtigung so wie ich es schon im Skript habe nachträglich wieder rausnehmen kann?

Vielen Dank

Content-Key: 316911

Url: https://administrator.de/contentid/316911

Ausgedruckt am: 19.03.2024 um 10:03 Uhr

Mitglied: colinardo
colinardo 05.10.2016 aktualisiert um 13:54:34 Uhr
Goto Top
Hallo smartsocke,
wie man das macht habe ich hier schon mal gepostet:
Ordner ohne Posteingang unter Outlook an Benutzer freigeben
Nach dem selben Schema machst du das für deinen freizugebenden Ordner.

Grüße Uwe
Mitglied: 124611
124611 05.10.2016 um 14:08:39 Uhr
Goto Top
Hallo Uwe,
danke für deine Nachricht.

Kann man das nicht irgendwie in einem Script abbilden so wie ich es schon versucht habe?

vg
Roland
Mitglied: colinardo
colinardo 05.10.2016 aktualisiert um 14:17:31 Uhr
Goto Top
Kann man das nicht irgendwie in einem Script abbilden so wie ich es schon versucht habe?
Sicher, kannst du das. Wie du die Hauptberechtigung vergibst steht ja schon im o.g. Link.
Für die Vergabe der einzelnen Ordnerberechtigungen nimmst du dann wie immer Add-MailboxFolderPermission.
Welche Berechtigungen du setzen musst steht ja schon in meiner Anleitung dazu! Wenn man ein bisschen seinen Grips anstrengt sollte das dann kein Hexenwerk mehr sein!
Mitglied: 124611
124611 13.10.2016 um 08:40:09 Uhr
Goto Top
ja nur mein Problem auf das ich hinaus will ist wie komme ich an den Unterordner ran?

Der Befehl Remove-MailboxFolderPermission $mailbox("\inbox\privat") -User $user #-Confirm:$false geht nicht. Nur wenn ich $Mailbox durch den direkten Usernamen ersetze geht das.

Das ist dann aber natürlich blöd wenn ich die Struktur so aufbrechen muss.

Irgendwie muss man doch jetzt auf den Unterordner zugreifen können.
Mitglied: colinardo
colinardo 13.10.2016 aktualisiert um 09:03:04 Uhr
Goto Top
ja nur mein Problem auf das ich hinaus will ist wie komme ich an den Unterordner ran?
Die Syntax der Ordnerangabe sieht immer so aus:
"EXCHANGEALIAS:\Inbox\privat"
Du musst also den Alias dem Ordner getrennt mit einem Doppelpunkt dem Ordner voranstellen.

Bei Verwendung von Variablen ($mailbox ist das Mailboxobjekt)
"$($mailbox.Alias):\inbox\privat"
Das ist dann aber natürlich blöd wenn ich die Struktur so aufbrechen muss.
??
Irgendwie muss man doch jetzt auf den Unterordner zugreifen können.
Geht doch ohne Probleme! Siehe oben.
Du brauchst nur mal in meinen diversen Beiträgen dazu stöbern, da siehst du das ebenfalls face-smile. Nicht zu vergessen das das ebenfalls in der Doku steht, die man ab und zu mal lesen sollte!

Beachte auch noch das es Mailboxen in Deutsch oder Englisch geben kann. D.h. das man hier z.B. anstatt dem Ordnernamen Kalender unter Umständen Calendar angeben muss. Dazu habe ich hier schon universelle Skripte geschrieben die das automatisch berücksichtigen und die Sprache aus der Mailbox auslesen.
Mitglied: 124611
124611 13.10.2016 um 10:13:05 Uhr
Goto Top
sorry aber leider funktioniert es nicht.

Die Rückmeldung "der Vorgang konnte nicht ausgeführt werden, weil ':\inbox\privat' nicht gefunden wurde.

Der Ordner ist aber definitiv da.

Mit dem Befehl

Remove-MailboxFolderPermission -Identity test:\inbox\privat -User $user -Confirm:$false

Funktioniert es nur mit der Variable leider nicht face-sad.
Mitglied: colinardo
Lösung colinardo 13.10.2016 aktualisiert um 11:21:39 Uhr
Goto Top
Funktioniert es nur mit der Variable leider nicht
Das funktioniert schon wenn man es richtig macht.
Du hast das Mailbox-Objekt nicht per Get-Mailbox geholt face-wink, dann kann es ja auch keine Eigenschaft Alias haben, ich war davon ausgegangen das $mailbox keinen String sonder das Mailbox-"Objekt" enthält.
$mbox = Get-Mailbox $mailbox
Remove-MailboxFolderPermission -Identity "$($mbox.Alias):\inbox\privat" -User $user -Confirm:$false   
Wenn du natürlich den Alias als String schon in der Variablen $mailbox hast dann geht natürlich auch direkt:
Remove-MailboxFolderPermission -Identity "$($mailbox):\inbox\privat" -User $user   

Also alles noch gute alte Powershell-Anfängerfehler face-wink
Mitglied: 124611
124611 13.10.2016 um 13:02:23 Uhr
Goto Top
klasse läuft face-smile

Vielen Dank face-smile