PowerShell-Skript zum selectiven Aktivieren von ActiveSync für ausgewählte Postfächer in Exchange 2010
Wir haben eine größeres Active Directory mit ca. 5000 Postfächern unter Exchange 2010. Seit kurzem haben wir auch die Postfach-Synchronisation über ActiveSync "im Programm". Dabei ist uns aufgefallen, dass standardmäßig alle Benutzer (Postfächer) synchronisieren dürfen. Da das von der Geschäftsführung explizit nicht gewünscht ist, mussten wir uns einen Weg suchen, wie wir nur ausgewählten Benutzern das Synchronisieren Ihrer Postfächer erlauben.
Nun kann man das an jedem Postfach, welches nicht synchronisieren darf, einzeln per Hand abschalten. Jedoch ist das bei der Menge der Postfächer nicht praktikabel. Zudem sind wir mehrere Administratoren, wo besonders denen im Helpdesk (Nichts gegen die fleißen Helpdesk-Mitarbeiter!!) es immer wieder passiert, dass sie vergessen, bei neuen Postfächern das ActiveSync zu deaktivieren. Ein Automatismus musste her.
Da ich keine andere Möglichkeit gefunden habe, ActiveSync für alle (neuen) Postfächer standardmäßig zu deaktivieren, habe ich dieses kleine Powershell-Script entwickelt, welches es ActiveSync für alle Postfächer deaktiviert und anschließend nur für die Mitglieder einer bestimmten Gruppe wieder aktiviert.
Da bei uns laufend Postfächer dazu kommen bzw. für ActiveSync freigegebe werden, muss man das Script immer wieder ausführen. Ich habe es deshalb auf einem Exchange Server als Scheduled Task eingeplant und lasse es jede Nacht einmal laufen. Wenn der Helpdesk ein Postfach für ActiveSync aktivieren oder deaktivieren muss, dann ändert er einfach die Mitgliedschaft der entsprechenden Gruppe.
Es funktioniert auch in Forests mit mehreren Trees und Domains sowie mehreren Exchange Mailbox-Servern und -Datenbanken.
Ich fürchte zwar, es geht doch einfacher. Aber bis dahin muss das hier reichen.
Gruß
Emeriks
Nun kann man das an jedem Postfach, welches nicht synchronisieren darf, einzeln per Hand abschalten. Jedoch ist das bei der Menge der Postfächer nicht praktikabel. Zudem sind wir mehrere Administratoren, wo besonders denen im Helpdesk (Nichts gegen die fleißen Helpdesk-Mitarbeiter!!) es immer wieder passiert, dass sie vergessen, bei neuen Postfächern das ActiveSync zu deaktivieren. Ein Automatismus musste her.
Da ich keine andere Möglichkeit gefunden habe, ActiveSync für alle (neuen) Postfächer standardmäßig zu deaktivieren, habe ich dieses kleine Powershell-Script entwickelt, welches es ActiveSync für alle Postfächer deaktiviert und anschließend nur für die Mitglieder einer bestimmten Gruppe wieder aktiviert.
Da bei uns laufend Postfächer dazu kommen bzw. für ActiveSync freigegebe werden, muss man das Script immer wieder ausführen. Ich habe es deshalb auf einem Exchange Server als Scheduled Task eingeplant und lasse es jede Nacht einmal laufen. Wenn der Helpdesk ein Postfach für ActiveSync aktivieren oder deaktivieren muss, dann ändert er einfach die Mitgliedschaft der entsprechenden Gruppe.
Es funktioniert auch in Forests mit mehreren Trees und Domains sowie mehreren Exchange Mailbox-Servern und -Datenbanken.
Ich fürchte zwar, es geht doch einfacher. Aber bis dahin muss das hier reichen.
Gruß
Emeriks
ImportSystemModules
cls
$GroupDomain="DNS-NAME_DER_DOMÄNE"
$GroupSAM="SAMACCOUNTNAME_DER_GRUPPE"
# Zuerst wird ActiveSync für alle Postfächer deaktiviert
echo ""
echo ""
echo "ActiveSync wird für alle Postfächer deaktiviert"
echo "Bitte warten ...."
echo ""
$MBs=(get-mailbox -IgnoreDefaultScope -resultsize unlimited)
foreach($MB in $MBs){
$dn=$MB.DistinguishedName
echo "... $dn"
set-casmailbox -identity $dn -IgnoreDefaultScope -ActiveSyncEnabled $false
}
# Dann werden die Mitglieder der Gruppe $GroupSAM bestimmt
$ds=([ADSISearcher]"LDAP://$GroupDomain")
$ds.filter="(Name=$GroupSAM)"
$grouppath=$ds.findone().path
$group=[ADSI]"$grouppath"
$ASusers=$group.member
# Und zuletzt wird für die zuvor bestimmten Gruppenmitglieder das ActiveSync wieder aktiviert
echo ""
echo ""
echo "ActiveSync wird für alle Postfächer der Mitglieder der Gruppe ""$GroupSAM"" aktiviert"
echo ""
foreach($MB in $ASusers){
echo "... $MB"
set-casmailbox -identity $MB -IgnoreDefaultScope -ActiveSyncEnabled $true
}
echo ""
echo ""
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 181133
Url: https://administrator.de/contentid/181133
Ausgedruckt am: 23.11.2024 um 07:11 Uhr
5 Kommentare
Neuester Kommentar
Zitat von @filippg:
wir veröffentlichen EAS über ISA bzw. TMG. Es ist m.E. auch Best Practice, Exchange nicht direkt aus dem Internet
erreichbar zu machen. Auf ISA/TMG sind auf der Veröffentlichungsregel für das EAS-Verzeichnis einfach nur bestimmte
Gruppen berechtigt...
Da hast du sicherlich Recht. Man könnte somit die gleiche Gruppe nutzen, wenn die Infrastruktur stimmt.wir veröffentlichen EAS über ISA bzw. TMG. Es ist m.E. auch Best Practice, Exchange nicht direkt aus dem Internet
erreichbar zu machen. Auf ISA/TMG sind auf der Veröffentlichungsregel für das EAS-Verzeichnis einfach nur bestimmte
Gruppen berechtigt...
Aber das hängt eben von den Unternehmensrichtlinien ab. Bei uns z.B. sollen OWA, IMAP, etc... nur den Nutzern zur Verfügung stehen, die es auch über das Internet dürfen.
Grüße,
Dani
Hallo Liebe Leute
ich habe dies jetzt mal versucht anzupassen auf Exchnage 2013,
jedoch komme ich nicht so richtig weiter,
kann mir bitte jemand noch ein tipp geben?
ich habe dies jetzt mal versucht anzupassen auf Exchnage 2013,
jedoch komme ich nicht so richtig weiter,
kann mir bitte jemand noch ein tipp geben?
$sans = Get-ADGroupMember -Identity Domänen-Benutzer -Recursive | select Samaccountname
foreach ($san in $SaNs)
{$mails = get-mailbox $san |select PrimarySmtpAddress}
foreach ($mail in $mails)
{set-casmailbox $mail -IgnoreDefaultScope -ActiveSyncEnabled $false -OWAenabled $false}
# Activesync Gruppenmitglieder enablen
$SaNs = Get-ADGroupMember -Identity Activesync | select Samaccountname
foreach ($san in $SaNs)
{$mails = get-mailbox $san |select PrimarySmtpAddress}
foreach ($mail in $mails)
{set-casmailbox $mail -IgnoreDefaultScope -ActiveSyncEnabled $true}
# OWA Gruppenmitglieder enablen
$SaNs = Get-ADGroupMember -Identity owa | select Samaccountname
foreach ($san in $SaNs)
{$mails = get-mailbox $san |select PrimarySmtpAddress}
foreach ($mail in $mails)
{set-casmailbox $mail -IgnoreDefaultScope -OWAEnabled $true}