• administration
  • migration
  • powershell
  • kontakt
  • EN
info@firstattribute.com
by FirstAttribute
Active Directory FAQ Active Directory FAQ
  • administration
  • migration
  • powershell
  • kontakt
  • EN

Exchange – „Senden als“-Berechtigung mit PowerShell

Sep 18, 2017 (Letztes Update) | Posted by Steve König | Exchange, PowerShell |

 

Exchange – „Senden als“-Berechtigung mit PowerShell

In Exchange gibt es die Möglichkeit, eine „Senden als“-Berechtigung für Konten zu vergeben. Dies bedeutet, dass ein Konto vorgeben kann, es würde eine E-Mail von einem anderen Konto senden. Der Empfänger merkt dabei keinen Unterschied, dass die E-Mail ursprünglich von einem anderen Konto gesendet wurde.

Inhaltsverzeichnis

  • 1 „Senden als“-Berechtigung im Exchange Admin Center
  • 2 Remote-Session mit Powershell
  • 3 Setzen der „Senden als“-Berechtigung
  • 4 Auslesen der „Senden als“-Berechtigung
  • 5 E-Mail-Adressen extrahieren
  • 6 Komplette Skripte als Funktionen

„Senden als“-Berechtigung im Exchange Admin Center

Direkt im Exchange (hier am Beispiel von Exchange 2016) kann das im Exchange Admin Center unter dem Punkt „Postfachstellvertretung“ eines Kontos eingestellt werden.

Remote-Session mit Powershell

Das funktioniert natürlich auch über Powershell, entweder direkt im Exchange oder mit einer Remote-Session. Da dieses Skript sich zur Automatisierung eignet, möchte ich in diesem Artikel kurz aufzeigen, wie man von einem Remote-PC die „Senden als“-Berechtigung eines Kontos setzt und ausliest. Das entstehende Skript ist kompatibel mit den Exchange-Versionen 2010, 2013 und 2016.

Um über einen Remote-PC Exchange-CmdLets ausführen zu können, benötigen wir eine Powershell-Session auf dem Exchange. Dazu muss entweder die Powershell mit den entsprechenden Berechtigungen gestartet werden oder man übergibt dem CmdLet zum Erstellen der Session ein entsprechendes Credential. Dies kann interaktiv wie folgt abgefragt werden:

1
$credential = Get-Credential

Für die Automatisierung ist das natürlich nicht geeignet. Wie man Credentials auch sicher abspeichern und auslesen kann, zeige ich in dem Beitrag Sessions von domänenfremden PCs importieren.

Nun müssen wir die Session vom Exchange importieren. Dies machen wir via Kerberos-Authentifizierung, indem wir das Credential übergeben. Dazu brauchen wir die URL des Powershell-Webservices des Exchange-Servers. Diese ist immer: http://<DNS Name des Exchange>/Powershell

Damit erstellen wir eine neue Session und importieren diese anschließend:

1
2
$session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://SEXC01/PowerShell/ -Authentication Kerberos -Credential $credential
Import-PSSession $session -CommandName Add-ADPermission

Beim Import-Session werden standardmäßig alle CmdLets der Session importiert. Das ist in unserem Fall unnötig, da wir nur das Add-ADPermission-CmdLet benötigen. Wegen der besseren Performance importieren wir auch nur dieses.

Active-Directory-Delegation-Powershell

Setzen der „Senden als“-Berechtigung

Zum Setzen der Berechtigung brauchen wir zwei Informationen: Die Identität des Nutzers (samAccountName, objectGUID etc.), für den die Berechtigung gesetzt werden soll, sowie die E-Mail-Adresse, für die er die „Senden als“ Berechtigung erhalten soll. Die Berechtigung wird dann mit folgendem Befehl gesetzt:

1
Add-ADPermission -Identity “test.user” -User “other.user@demofa.net” -AccessRights ExtendedRight -ExtendedRights "Send As"

Das war es auch eigentlich schon. Am Ende sollten wir allerdings nicht vergessen, die Session wieder zu entfernen, da diese sonst offen bleibt:

1
Remove-PSSession $session

Auslesen der „Senden als“-Berechtigung

Nun zum zweiten Teil, der eigentlich einfacher als das Setzen der Berechtigung sein sollte, aber ein wenig trickreicher ist: Das Auslesen der Berechtigung. Auch hier machen wir mit dem New-PSSession-Command wieder eine neue Session auf und importieren diese dann. Beim Import selbst allerdings brauchen wir andere CmdLets:

1
Import-PSSession -Session $session -CommandName Get-Mailbox, Get-ADPermission

Zuerst holen wir uns die Mailbox des Nutzers heran, von dem wir die Berechtigung auslesen wollen:

1
$mb = Get-Mailbox „test.user@demofa.net“

Für diese Mailbox brauchen wir jetzt die AD-Permissions. Die „Senden als“-Berechtigungen verstecken sich dabei in den „Extended Rights“ und müssen dort herausgesucht werden. Zusätzlich wollen wir (normalerweise) keine vererbten Berechtigungen sehen und auch nicht die Berechtigung auf sich selbst, die auch in den Extended Rights als „Send As“-Berechtigungen hinterlegt sind.

Zusammengefasst in einem Befehl sieht das so aus:

1
$users = $mb | Get-ADPermission | where {($_.ExtendedRights -like "*Send-As*") -and ($_.IsInherited -eq $false) -and -not ($_.User -like "NT AUTHORITY\SELF")}

E-Mail-Adressen extrahieren

In $users finden wir alle Nutzer, für die test.user@demofa.net die “Senden Als”-Berechtigung hat. Leider allerdings sind dort nicht die E-Mail-Adressen enthalten, sondern nur der Anmeldename in Form von <Domäne>\<Anmeldename>. Mit einem kleinen Trick aber können wir die Mailadresse einfach finden. Diese steht schließlich auch im angebundenen Active Directory. Wir suchen einfach nach dem Nutzer mit dem Anmeldenamen in der Domäne, lesen seine E-Mail-Adresse aus und fügen uns diese eine Liste hinzu. In Skript sieht das folgendermaßen aus:

1
2
3
4
5
$sendAsMailAddresses = New-Object System.Collections.ArrayList($null)
foreach($user in $users) {
   $adUser = Get-ADUser $user.User.Split("\")[1] -Properties mail
   $sendAsMailAddresses.Add($adUser.mail)
}

Wir gehen über unsere $users-Liste – bei jedem $user steht in $user.User der Name in oben genannter Form. Deswegen splitten wir ihn am „\“ auf, sodass wir nur den Anmeldenamen zum Suchen im AD verwenden. Wir wollen natürlich die Eigenschaft mail auslesen und diese anschließend unserer finalen Liste hinzufügen.

Jetzt können wir $sendAsMailAddresses durchgehen und schauen, welche Adressen darin enthalten sind. Damit sind wir auch hier fertig. Aber auch hier dürfen wir am Ende nicht vergessen, die PS-Session wieder zu entfernen:

1
Remove-PSSession $session

Komplette Skripte als Funktionen

Zum Abschluss noch einmal die zwei Skripte komplett als Funktionen, denen man die entsprechenden Werte als Parameter übergeben kann:

Setzen der „Senden als“-Berechtigung

1
2
3
4
5
6
7
8
9
10
11
function add-sendas-permissions {    
   param($identity, $mailToAdd)
  
   $credential = Get-Credential    
   $session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://SEXC01/PowerShell/ -Authentication Kerberos -Credential $credential    
   Import-PSSession $session -CommandName Add-ADPermission
 
   Add-ADPermission -Identity $identity -User $mailToAdd -AccessRights ExtendedRight -ExtendedRights "Send As"    
  
   Remove-PSSession $session
}

Auslesen der „Senden als“-Berechtigung

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function get-mailbox-info {    
   param($mail, $identity)
    
   $credential = Get-Credential    
   $session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://SEXC01/PowerShell/ -Authentication Kerberos -Credential $credential    
   Import-PSSession -Session $session -CommandName Get-Mailbox, Get-CASMailbox, Get-ADPermission
 
   $mb = Get-Mailbox $mail    
   $users = $mb | Get-ADPermission | where {($_.ExtendedRights -like "*Send-As*") -and ($_.IsInherited -eq $false) -and -not ($_.User -like "NT AUTHORITY\SELF")}  
   $sendAsMailAddresses = New-Object System.Collections.ArrayList($null)
 
   foreach($user in $users) {        
     $adUser = Get-ADUser $user.User.Split("\")[1] -Properties mail        
     $sendAsMailAddresses.Add($adUser.mail)    
   }
 
   Write-Host $sendAsMailAddresses    
 
   Remove-PSSession $session
}

 

FirstAttribute AG

 
FirstAttribute AG – Ihr Microsoft Consulting Partner

Wir unterstützen Sie bei PowerShell Scripting Fragen. 
Nehmen Sie Kontakt zu uns auf.
  

 

Artikel weiterempfehlen:
  • xingen
  • sharen
  • tweeten
  • teilen
  • Google+
  • mailen
Artikel erstellt am: 19.09.2017
Tags: BerechtigungenExchangeExchange 2016Send asSenden als
0

You also might be interested in

QMM Exchange: Mailbox Collections automatisiert erstellen

QMM Exchange: Mailbox Collections automatisiert erstellen

Jul 29, 2014

Exchange Migrationen mit dem Quest Migration Manger for Exchange QMMEX[...]

Dell Migrator for GroupWise 4.6 unterstützt Exchange 2016

Dell Migrator for GroupWise 4.6 unterstützt Exchange 2016

Mrz 28, 2016

Dell hat vor einigen Tagen eine neue Version des ‚Dell[...]

Quest QMM 8.13 – Public Folder Migration zu Exchange 2016

Quest QMM 8.13 – Public Folder Migration zu Exchange 2016

Mrz 31, 2017

Wie bereits in dem Artikel Migration Manager for AD/Exchange 8.13 [...]

Leave a Reply

Danke für Ihre Anregungen, Fragen und Hinweise.
Cancel Reply

Neueste Artikel

  • Einfaches Datenmapping mit Calculated Properties (PS)
  • Pester: Test-Framework für PowerShell
  • PowerShell – Gruppen-Manager Berechtigung setzen
  • Outlook 2016 sendet winmail.dat als Anlage
  • O365 Hybrid – Outlook Autodiscover
  • Exchange – „Senden als“-Berechtigung mit PowerShell
  • Quest QMM – MAgE: Error Cannot update permissions
  • Azure Active Directory PowerShell Version 2
  • Rekursives Auslesen von Gruppenmitgliedern im AD
  • AD Migration und maximale Anzahl von Gruppenmitgliedschaften

Links

  • FirstAttribute – AD Consulting
  • FirstAttribute – Migrationen
  • Jobs bei FirstAttribute

Kategorien

  • Administration
  • Citrix
  • Cloud
  • Exchange
  • KnowHow
  • Konfiguration
  • Migration
  • PowerShell
  • Programmierung
  • Quest Migration Manager
  • SharePoint
  • Tools

AD Gruppen dynamisch machen

Schlagwörter

ACL Active Directory AD Objekt azure Azure AD Berechtigung Berechtigungen Cloud cmdlets Delegation Domain Controller dynamicgroup dynamische Gruppen Exchange Exchange 2016 Exchange Migration Federation FirstWare Global Catalog Group Policy Gruppen Gruppenmitgliedschaft IDM-Portal IIS LDAP lokale Gruppen Microsoft Azure Migration Novell NTFS Office 365 PowerShell QMM QMM Exchange Quest Migration Manager Schema Set-ADUser SharePoint SID SID History SQL Windows 10 Windows Server 2012 R2 ZCM Zenworks

Kontakt aufnehmen

Sie haben eine Frage oder Anmerkung? Schicken Sie uns schnell eine Nachricht.

Nachricht senden
Ohne nachdenken. Active Directory ganz anders. FirstWare IDM-Portal

Folgen Sie uns

Kontakt

  • FirstAttribute AG
  • Hagenheimer Strasse 4, 86928 Hofstetten, Germany
  • +49 89 215 442 400
  • www.firstattribute.com

Schlagwörter

ACL Active Directory AD Objekt azure Azure AD Berechtigung Berechtigungen Cloud cmdlets Delegation Domain Controller dynamicgroup dynamische Gruppen Exchange Exchange 2016 Exchange Migration Federation FirstWare Global Catalog Group Policy Gruppen Gruppenmitgliedschaft IDM-Portal IIS LDAP lokale Gruppen Microsoft Azure Migration Novell NTFS Office 365 PowerShell QMM QMM Exchange Quest Migration Manager Schema Set-ADUser SharePoint SID SID History SQL Windows 10 Windows Server 2012 R2 ZCM Zenworks

Neueste Kommentare

  • Stefan bei Outlook Suche verfeinern mit speziellen Suchkriterien
  • Conrad bei Outlook Suche verfeinern mit speziellen Suchkriterien
  • Rome bei PowerShell-Sessions von domänenfremden PCs
Login

© 2018 · Active-Directory-FAQ by firstattribute.com

Prev Next