La funzionalità di mapping automatico delle cassette postali di Exchange 2010 non funziona quando i gruppi concedono autorizzazioni

Ho una cassetta postale condivisa che devo distribuire a uno dei nostri dipartimenti in un ambiente Exchange 2010 SP2 con i client Outlook 2010. Sto cercando di fare affidamento sulla funzionalità di mapping automatica introdotta da Exchange 2010 SP1 , per ovvie ragioni, ma non funziona.

A un'ispezione più approfondita, questo sarebbe dovuto al fatto che non funziona con i gruppi , abilmente impedendo che diventi una caratteristica utile per chiunque con più di una manciata di utenti di posta da amministrare.

Il collegamento di cui sopra contiene uno script PowerShell di soluzione alternativa per leggere l'appartenenza di un gruppo e aggiungere direttamente tali membri per avere autorizzazioni di accesso completo, ma ciò non fornisce le funzionalità per aggiornare il mapping automatico quando le persone si uniscono o lasciano il dipartimento.

Qualcuno sa di un modo per get questa function funzionale quando i gruppi vengono utilizzati per concedere agli utenti le autorizzazioni di accesso completo a una cassetta postale? (Oppure ho qualche idea su come affrontare il problema, anche? In questo momento, sto pensando ad uno script Powershell che aggiorna periodicamente gli attributi AD rilevanti, ma … c'è un modo migliore.)

  • Oltre a guardare il dumping di $ PSVersionTable e scaricare la variabile e le "PS-Drives", cosa posso fare per confrontare gli ambienti PowerShell?
  • Come prendere le eccezioni con PowerShell
  • Utilizzo di Powershell per aggiornare l'home directory utenti
  • Come conoscere lo script corrente FullName
  • Il module Active Directory per PowerShell Get-ADObject e Set-ADObject non funzionano con l'attributo personalizzato
  • Perché i cmdlet di Exchange 2010 ignorano ErrorVariable?
  • Manipolazione della configuration di IIS7 con Powershell
  • SQL Server PowerShell non riesce a trovare l'errore di path
  • One Solution collect form web for “La funzionalità di mapping automatico delle cassette postali di Exchange 2010 non funziona quando i gruppi concedono autorizzazioni”

    Ho creato questo script quando abbiamo eseguito lo stesso problema. Forse non è la cosa più bella del mondo, ma il lavoro è fatto. Ho un OU separato per i gruppi di accesso e poi un altro per le cassette postali delle risorse. I gruppi e le cassette postali di risorse utilizzano lo stesso nome, ad exception di un A- di fronte al gruppo.

    ad esempio A-RESMBX1 per il nome del gruppo e REXMBX1 per la cassetta postale delle risorse.

    Lo script elenca i gruppi nei gruppi OU e quindi le cassette postali di risorsa in quella OU . Successivamente, loops attraverso ciascun gruppo e trova la cassetta postale di risorse corrispondente. Quando viene trovata una corrispondenza, elenca gli utenti dei gruppi e li aggiunge all'attributo msExchDelegateListLink della cassetta postale risorse.

    msExchDelegateListLink anche gli utenti dall'attributo msExchDelegateListLink che non sono più membri del gruppo di accesso associato. Ho questo in esecuzione in un'operazione pianificata su un DC.

    Il nostro bisogno era dovuto all'elevato fatturato degli intern che whereva avere accesso a un gran numero di cassette postali di risorse.

    Dovresti aggiornare i routes LDAP alle OU per $Groups & $ResMBXs e il tuo nome DC per $DomainController

     Import-Module ActiveDirectory $DomainController = "MYDOMAINCONTROLLER" $Groups = Get-ADGroup -Filter * -SearchBase 'OU=Groups,OU=Resource Mailboxes,DC=mydomain,DC=com' -Server $DomainController | Sort-Object Name $ResMBXs = Get-ADUser -Filter * -SearchBase 'OU=Resource Mailboxes,DC=mydomain,DC=com' -Server $DomainController -properties msExchDelegateListLink | Sort-Object Name Write-Host "Enumerating Groups and Resource Mailboxes..." Write-Host "" # IsMember function is borrowed from : http://gallery.technet.microsoft.com/scriptcenter/5adf9ad0-1abf-4557-85cd-657da1cc7df4 # Hash table of security principals and their security group memberships. $GroupList = @{} Function IsMember ($ADObject, $GroupName) { # Function to check if $ADObject is a member of security group $GroupName. # Check if security group memberships for this principal have been determined. If ($GroupList.ContainsKey($ADObject.sAMAccountName.ToString() + "\") -eq $False) { # Memberships need to be determined for this principal. Add "pre-Windows 2000" # name to the hash table. $GroupList.Add($ADObject.sAMAccountName.ToString() + "\", $True) # Retrieve tokenGroups attribute of principal, which is operational. $ADObject.psbase.RefreshCache("tokenGroups") $SIDs = $ADObject.psbase.Properties.Item("tokenGroups") # Populate hash table with security group memberships. ForEach ($Value In $SIDs) { $SID = New-Object System.Security.Principal.SecurityIdentifier $Value, 0 # Translate into "pre-Windows 2000" name. $Group = $SID.Translate([System.Security.Principal.NTAccount]) $GroupList.Add($ADObject.sAMAccountName.ToString() + "\" + $Group.Value.Split("\")[1], $True) } } # Check if $ADObject is a member of $GroupName. If ($GroupList.ContainsKey($ADObject.sAMAccountName.ToString() + "\" + $GroupName)) { Return $True } Else { Return $False } } Foreach ($gr in $Groups) { Foreach ($mbx in $ResMBXs) { $MBXName = "A-" + $mbx.Name $LDAPUser=[ADSI]"LDAP://$($DomainController)/$($mbx.distinguishedName)" if ($gr.Name -eq $MBXName) { #Build an Array of DNs from each Group $Members = Get-ADGroupMember $gr -Server $DomainController if ($Members -ne $Null) { Foreach ($mbr in $Members){ if($mbr.distinguishedName -ne $Null) { $LDAPUser.msExchDelegateListLink.Add($mbr.distinguishedName) $LDAPUser.SetInfo() } $AddedUsers += $mbr.Name } } Else {Write-Host -foregroundcolor darkyellow "Group contains no members..."; Write-Host ""} if($mbx.msExchDelegateListLink -ne $Null) { $ACLUsers = $mbx.msExchDelegateListLink Foreach ($ACLUser in $ACLUsers) { #Check if user is a member of the current group #If not, remove from attribute $user = [ADSI]"LDAP://$($DomainController)/$($ACLUser)" $userDN = Get-ADUser $ACLUser -Server $DomainController $mem = IsMember $user $gr.Name If ($mem -eq $False) { $LDAPUser.msExchDelegateListLink.Remove($userDN.distinguishedName) $LDAPUser.SetInfo() Write-Host "The Following User was removed from: " -nonewline; Write-Host -foregroundcolor yellow $mbx.Name Write-Host -nonewline -foregroundcolor darkyellow " " $UserDN.Name Write-Host "" } } } $Members = "" Write-Host "The Following Users were added to: " -nonewline; Write-Host -foregroundcolor yellow $mbx.Name Write-Host "" Write-Host -foregroundcolor darkyellow $AddedUsers Write-Host "" $AddedUsers = "" } } } 
    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.