GuentherH 61 Geschrieben 1. Oktober 2012 Melden Teilen Geschrieben 1. Oktober 2012 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 Zitieren Link zu diesem Kommentar
RobertWi 81 Geschrieben 1. Oktober 2012 Melden Teilen Geschrieben 1. Oktober 2012 Ach, verstehe, dann habe ich Dich missverstanden. RU 3 mussten wir da aus Zeitgründen überspringen - das wäre ja lustig geworden. :) Zitieren Link zu diesem Kommentar
NorbertFe 2.045 Geschrieben 1. Oktober 2012 Melden Teilen Geschrieben 1. Oktober 2012 Das erklärt mir aber einige Anfragen. ;) muss ich wohl doch mal auf rup 4 gehen. Zitieren Link zu diesem Kommentar
fazez 10 Geschrieben 2. Oktober 2012 Autor Melden Teilen Geschrieben 2. Oktober 2012 Danke für die Links RobertWi! Guter Hinweis mit dem RegKey; wir setzen diesen auch ein und haben aktuell RU2. Zitieren Link zu diesem Kommentar
fazez 10 Geschrieben 2. Oktober 2012 Autor Melden Teilen Geschrieben 2. Oktober 2012 Hier gibts scheinbar das fertige Script zum AutoMapping, habe es mir noch nicht genauer angesehen.... Auto Mapping | Steve Goodman's Exchange Blog Zitieren Link zu diesem Kommentar
RobertWi 81 Geschrieben 2. Oktober 2012 Melden Teilen Geschrieben 2. Oktober 2012 Hier gibts scheinbar das fertige Script zum AutoMapping, habe es mir noch nicht genauer angesehen....Auto Mapping | Steve Goodman's Exchange Blog Das brauchst Du seit SP 2 nicht mehr, da gibt es den eingangs erwähnten Schalter. Zitieren Link zu diesem Kommentar
fazez 10 Geschrieben 2. Oktober 2012 Autor Melden Teilen Geschrieben 2. Oktober 2012 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 Zitieren Link zu diesem Kommentar
RobertWi 81 Geschrieben 3. Oktober 2012 Melden Teilen Geschrieben 3. Oktober 2012 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. Zitieren Link zu diesem Kommentar
fazez 10 Geschrieben 4. Oktober 2012 Autor Melden Teilen Geschrieben 4. Oktober 2012 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 Zitieren Link zu diesem Kommentar
RobertWi 81 Geschrieben 4. Oktober 2012 Melden Teilen Geschrieben 4. Oktober 2012 Steht da noch was unterhalb des "-------------------"? Was kommt raus, wenn Du "$user | fl" in die Text-Datei umleitest? Zitieren Link zu diesem Kommentar
fazez 10 Geschrieben 4. Oktober 2012 Autor Melden Teilen Geschrieben 4. Oktober 2012 nein unterhalb steht nichts weiter. wenn ich das ganze mit | fl mache bekomme ich das hier: SecurityIdentifier : ....und nein, drunter steht nichts :) Zitieren Link zu diesem Kommentar
RobertWi 81 Geschrieben 4. Oktober 2012 Melden Teilen Geschrieben 4. Oktober 2012 Kannst Du zum Testen die Ausgabe von Get-Member in die Text-Datei umleitern, also: "$user | gm > test.txt" Zitieren Link zu diesem Kommentar
fazez 10 Geschrieben 4. Oktober 2012 Autor Melden Teilen Geschrieben 4. Oktober 2012 Hab ich gemacht, dann ist die txt leer. Zitieren Link zu diesem Kommentar
RobertWi 81 Geschrieben 4. Oktober 2012 Melden Teilen Geschrieben 4. Oktober 2012 Im Prinzip sollte es so richtig sein, leider kann ich das im Augenblick selbst nicht testen. Zitieren Link zu diesem Kommentar
fazez 10 Geschrieben 5. Oktober 2012 Autor Melden Teilen Geschrieben 5. Oktober 2012 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 Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.