Jump to content

Unglückliches Verhalten im Outlook mit AutoMapping


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Ich habe bei einem Kunden eine Mailbox auf Ex 2010 SP 2 RU 4 mit Automapping und diesem Regkey

 

Ab RU4 funktioniert es ja wieder ;)

Nur hatte ich das Vergnügen es noch bei RU3 zu konfigurieren. Und da hat es mich doch sehr gefrustet, weil es nicht klappte. Und da ich wusste, dass es früher ging, habe ich natürlich den Fehler bei mir gesucht, und dann erst bei MS.

 

LG Günther

Link zu diesem Kommentar

Habe mit dem ScriptingAgent bisschen zum Spielen angefangen, aber ich checks noch nicht ganz :)

 

Über das hier kann ich die zuvor geänderte Mailbox ansteuern:

 

$provisioningHandler.UserSpecifiedParameters["Identity"]

 

Wie komme ich aber an den User (Max Mustermann), der Rechte für diese Mailbox bekommen hat?

 

 

<?xml version="1.0" encoding="utf-8" ?>

<Configuration version="1.0">

<Feature Name="MailboxPermissionWithoutAutoMapping" Cmdlets="Add-MailboxPermission">

<ApiCall Name="OnComplete">

If($succeeded) {

 

$mailbox = $provisioningHandler.UserSpecifiedParameters["Identity"]

 

Add-MailboxPermission -Identity $mailbox -User "Mustermann, Max" -AccessRight FullAccess -InheritanceType All -Automapping $false

 

 

}

</ApiCall>

</Feature>

</Configuration>

 

Das nächste ist, wenn ich Max Musternamann durch ein realen namen ersetze, der auch das msexchDelegateListBL Attribut auf mein Testpostfach hat, loopt das script. -keine Fehlermeldung wird aber auch nicht fertig.

 

Habe das getestet in dem ich mir die "Identity" in ein texfile gepiped habe. Als das Textfile dann 1MB gross war habe ich an der EMC abgebrochen...

 

MfG Fazez

Link zu diesem Kommentar

Moin,

 

ohne es getestet zu haben, geht eventuell etwas wie:

 

$user = $provisioningHandler.UserSpecifiedParameters["User"]

 

Und die Loop ist verständlich, weil Du ja "Add-Mailboxpermission" erweiterst, in der Erweiterung aber wieder Add-Mailboxpermission aufrufst, und damit wieder in der Erweiterung landest.

 

Eventuell ist es sinnvoll, in der Erweiterung nicht mit Add-Mailboxpermission zu arbeiten, sondern den Code von Steve Blog von oben zu verwenden, also diesen Teil hier:

 

$LDAPUser=[ADSI]"LDAP://$($DomainController)/$($Mailbox.DistinguishedName)"

$LDAPUser.msExchDelegateListLink.Remove(((Get-Mailbox $User).DistinguishedName))

$LDAPUser.SetInfo()

 

Dann hast Du die Schleife ausgebaut.

Link zu diesem Kommentar

Servus,

 

habe den Code von Steve blog verwendet. In der PowerShell läuft das einwandfrei wenn ich den Namen von dem User der Rechte auf eine Mailbox bekommen hat händisch eintrage.

 

Leider weiß ich immer noch nicht wie ich per Skrippt an den User komme.

 

Wenn ich die folgende Zeile in eine txt pipe:

 

$user = $provisioningHandler.UserSpecifiedParameters["User"]

 

steht in der txt das:

 

SecurityIdentifier

------------------

 

 

Jemand noch eine Idee wie das gehen könnte?

Danke,

 

MfG Fazez

Link zu diesem Kommentar

Ich habe jetzt einfach mal das Script so zusammengebaut wies es eigentlich funktionieren müsste:

 

<?xml version="1.0" encoding="utf-8" ?>

<Configuration version="1.0">

<Feature Name="MailboxPermissionWithoutAutoMapping" Cmdlets="Add-MailboxPermission">

<ApiCall Name="OnComplete">

If($succeeded) {

 

Start-Sleep -s 5

Set-ADServerSettings -ViewEntireForest $true

$Mailbox = $provisioningHandler.UserSpecifiedParameters["Identity"]

$removeUser = $provisioningHandler.UserSpecifiedParameters["User"]

if (!$Mailbox) {throw "Could not bla bla" }

$DomainController = $Mailbox.OriginatingServer

$LDAPUser=[ADSI]"LDAP://$($DomainController)/$($Mailbox.DistinguishedName)"

$LDAPUser.msExchDelegateListLink.Remove(((Get-Mailbox $removeUser).DistinguishedName))

$LDAPUser.SetInfo()

 

}

</ApiCall>

</Feature>

</Configuration>

 

Das komische ist, das er mir bei "Set-Info()" aussteigt. Und zwar mit 0x8000500 ("das angegebene Verzeichnisdienstattribut bzw. der Wert ist nicht vorhanden"). Es ist immer die gleiche Fehlermeldung auch wenn ich echte Namen für $removeUser und $Mailbox verwende.

 

Das erinnert mich stark an die Aussage von Steve Goodmann:

Disable Exchange 2010 SP1 and SP2's Auto Shared Mailbox Mapping Feature

 

Savvy Exchange Powershell coders will ask "why don't you do this using the Scripting Agent, disabling it across the board, even in Exchange Management Console".. Well that was my first thought. However, it appears that with Add-MailboxPermission the actual entries are added after the OnComplete section runs instead of before. If that get's fixed I'll certainly re-visit as it would be ideal to have a solution that allows the feature to be switched on or off on demand.

 

Gibt es noch einen Einstiegspunkt nach OnComplete? Kann doch nicht sein, dass man das nicht umsetzen kann?!?

 

Hier noch kurz ein Auszug von der Fehlermeldung aus der EMC:

 

 

Warning:

The cmdlet extension agent with the index 0 has thrown an exception in OnComplete(). The exception is: Microsoft.Exchange.Provisioning.ProvisioningException: ScriptingAgent: Exception thrown while invoking scriptlet for OnComplete API: The following exception occurred while retrieving member "SetInfo": "Unknown error (0x80005000)". ---> System.Management.Automation.ExtendedTypeSystemException: The following exception occurred while retrieving member "SetInfo": "Unknown error (0x80005000)" ---> System.Runtime.InteropServices.COMException (0x80005000): Unknown error (0x80005000)

at System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail)

at System.DirectoryServices.DirectoryEntry.Bind()

at System.DirectoryServices.DirectoryEntry.get_AdsObject()

at System.DirectoryServices.PropertyValueCollection.PopulateList()

at System.DirectoryServices.PropertyValueCollection..ctor(DirectoryEntry entry, String propertyName)

at System.DirectoryServices.PropertyCollection.get_Item(String propertyName)

at System.Management.Automation.DirectoryEntryAdapter.GetMember[T](Object obj, String memberName)

at System.Management.Automation.Adapter.BaseGetMember[T](Object obj, String memberName)

 

 

MfG Fazez

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...