Exchange 2016 - Stellvertretung via Powershell konfigurieren
Guten Abend Kolleginnen und Kollegen,
ich benötige einen Denkanstoß / Lösung(sansatz) für folgendes Problem:
Wie kann ich die gelbmarkierte Option mit Powershell setzen?
Den Stellvertreter und die Berechtigungen kann ich bereits via Powershell problemlos setzen.
Schönen Sonntagabend,
Dani
ich benötige einen Denkanstoß / Lösung(sansatz) für folgendes Problem:
Wie kann ich die gelbmarkierte Option mit Powershell setzen?
Den Stellvertreter und die Berechtigungen kann ich bereits via Powershell problemlos setzen.
Schönen Sonntagabend,
Dani
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 323569
Url: https://administrator.de/forum/exchange-2016-stellvertretung-via-powershell-konfigurieren-323569.html
Ausgedruckt am: 26.12.2024 um 23:12 Uhr
8 Kommentare
Neuester Kommentar
https://www.experts-exchange.com/questions/27463437/Give-rights-to-see-p ...
Entweder FullAccess geben oder so gewünschten Ordner mit Owner-Rechten für den Stellvertreter kennzeichnen.
Oder mit EWS arbeiten:
http://gsexdev.blogspot.com/2009/04/add-delegates-to-mailbox-with.html? ...
http://www.flobee.net/powershell-module-for-managing-exchange-2010-mail ...
und ViewPrivateItems = $true
setzen.
Gruß
Entweder FullAccess geben oder so gewünschten Ordner mit Owner-Rechten für den Stellvertreter kennzeichnen.
Oder mit EWS arbeiten:
http://gsexdev.blogspot.com/2009/04/add-delegates-to-mailbox-with.html? ...
http://www.flobee.net/powershell-module-for-managing-exchange-2010-mail ...
und ViewPrivateItems = $true
setzen.
Gruß
s. EWS Ergänzung oben. Damit kann man es setzen.
Zitat von @Dani:
weißt du zufällig ob man im EWS auch mit DistinguishedName arbeiten kann?
In allen Beispielen wird immer die E-Mailadresse genutzt.
https://msdn.microsoft.com/en-us/library/microsoft.exchange.webservices. ...weißt du zufällig ob man im EWS auch mit DistinguishedName arbeiten kann?
In allen Beispielen wird immer die E-Mailadresse genutzt.
Aber das kannst du ja einfach umsetzen... Mit Get-AdUser kommst du ja an alle Eigenschaften eines Users und kannst sie entsprechend zuordnen.
Gruß
Servus Dani,
machst du z.B. hiermit. Detaillierte Kommentare siehe Code.
Auszuführen in einer normalen Powershell-Konsole die mit den Rechten eines Users ausgeführt wird der über Impersonation-Rechte auf dem Exchange verfügt. Benötigt wird zusätzlich die EWS-API-DLL im selben Verzeichnis des Scripts.
Grüße Uwe
Falls der Beitrag gefällt, seid so nett und unterstützt mich durch eine kleine Spende / If you like my contribution please support me and donate
machst du z.B. hiermit. Detaillierte Kommentare siehe Code.
Auszuführen in einer normalen Powershell-Konsole die mit den Rechten eines Users ausgeführt wird der über Impersonation-Rechte auf dem Exchange verfügt. Benötigt wird zusätzlich die EWS-API-DLL im selben Verzeichnis des Scripts.
# Primary SMTP Addresses der Delegates im Array angeben
$delegateUsers = @('delegate1@testlab.intern','delegate2@testlab.intern')
if ($PSVersionTable.PSVersion.Major -lt 3){write-host "ERROR: Minimum Powershell Version 3.0 is required!" -F Yellow; return}
# Active Directory Modul laden
Import-Module ActiveDirectory
# EWS DLL aus dem gleichen Verzeichnis des Scripts laden
Add-Type -Path "$(Split-Path $MyInvocation.MyCommand.Definition -Parent)\Microsoft.Exchange.WebServices.dll"
# Mit Exchange verbinden
try{
$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 FQDN from AD" -ForegroundColor Red; return}
write-host "Creating connection to Exchange-Server '$exchange_server' ..." -ForegroundColor Green
$session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri "http://$exchange_server/powershell" -Authentication Kerberos
Import-PSSession $session -DisableNameChecking -AllowClobber | out-null
}catch{
throw $_
return
}
# Allen Zertifikaten vertrauen
Add-Type @"
using System.Net;
using System.Security.Cryptography.X509Certificates;
public class TrustAllCertsPolicy : ICertificatePolicy {
public bool CheckValidationResult(
ServicePoint srvPoint, X509Certificate certificate,
WebRequest request, int certificateProblem) {
return true;
}
}
"@
# Trust all certs policy dem ServicePointManager zuweisen
[System.Net.ServicePointManager]::CertificatePolicy = New-Object TrustAllCertsPolicy
# EWS Objekt erstellen
$ews = new-object Microsoft.Exchange.WebServices.Data.ExchangeService
$ews.Url = [string](Get-WebServicesVirtualDirectory).InternalURL
# Benutze die Credentials mit dem das Skript ausgeführt wird
$ews.UseDefaultCredentials = $true
# Delegates-Array erzeugen
$dgArray = new-Object Microsoft.Exchange.WebServices.Data.DelegateUser $delegateUsers.Count
0..($delegateUsers.Count-1) | %{
try{
$dgUser = new-object Microsoft.Exchange.WebServices.Data.DelegateUser($delegateUsers[$_])
$dgUser.ViewPrivateItems = $true
$dgUser.Permissions.InboxFolderPermissionLevel = [Microsoft.Exchange.WebServices.Data.DelegateFolderPermissionLevel]::Editor
$dgArray[$_] = $dgUser
}catch{
write-host $_ -F Red
}
}
# Deegates in allen aktivierten "Shared-Mailboxes" hinzufügen
Get-Mailbox -RecipientTypeDetails SharedMailbox -Filter "IsMailBoxEnabled -eq 'True'" | %{
write-host "Processing Delegates in Mailbox '$($_.Name)'." -ForegroundColor Blue -BackgroundColor White
$ews.ImpersonatedUserId = New-Object Microsoft.Exchange.WebServices.Data.ImpersonatedUserId([Microsoft.Exchange.WebServices.Data.ConnectingIdType]::SmtpAddress, [string]$_.PrimarySmtpAddress)
try{
# Mailbox-Objekt erzeugen
$mbox = New-Object Microsoft.Exchange.WebServices.Data.Mailbox ($_.PrimarySmtpAddress)
# Vorhandene Delegates abfragen
$delegates = $ews.GetDelegates($mbox,$true)
# Flag bei den vorhandenen Delegates setzen
$updatelist = $delegates.DelegateUserResponses | ?{!$_.DelegateUser.ViewPrivateItems}
if ($updatelist){
write-host "Updating existing Delegates properties..." -F Green
# Eigenschaften für den Delegaten ändern (hier ViewPrivateItems erlauben)
$updatelist | %{$_.DelegateUser.ViewPrivateItems = $true}
# Update der vorhandenen Delegaten durchführen
$ews.UpdateDelegates($mbox,$null,$updatelist.DelegateUser)
}
# Noch nicht vorhandene Delegates ermitteln und hinzufügen
$addlist = $dgArray | ?{$_.UserId.PrimarySmtpAddress -notin $delegates.DelegateUserResponses.DelegateUser.UserId.PrimarySmtpAddress}
if ($addlist){
write-host "Adding Delegates ..." -F Green
$ews.AddDelegates($mbox, [Microsoft.Exchange.WebServices.Data.MeetingRequestsDeliveryScope]::NoForward,$addlist)
}
}catch{
write-host $_ -F Red
return
}
}
# Exchange Session beenden
Remove-PSSession $session
Falls der Beitrag gefällt, seid so nett und unterstützt mich durch eine kleine Spende / If you like my contribution please support me and donate