Trovare le autorizzazioni necessarie per eseguire i cmdlet di Exchange

È possibile utilizzare PowerShell per trovare le autorizzazioni necessarie per eseguire qualsiasi cmdlet di Exchange o Exchange Online. In questa procedura vengono illustrati i gruppi di ruoli e i gruppi di gestione Controllo degli accessi in base al ruolo (RBAC) che consentono l'accesso a un cmdlet specificato, anche se l'organizzazione dispone di ruoli personalizzati, gruppi di ruoli personalizzati o assegnazioni di ruoli personalizzati.

Che cosa è necessario sapere prima di iniziare

  • Tempo stimato per il completamento di questa procedura: meno di 5 minuti.

  • È possibile utilizzare solo PowerShell per eseguire questa procedura.

  • Per completare questa procedura, è necessario essere un amministratore. In particolare, è necessario accedere ai cmdlet Get-ManagementRole e Get-ManagementRoleAssignment. Per impostazione predefinita, l'accesso a questi cmdlet viene concesso dalla configurazione di sola visualizzazione o dai ruoli di gestione dei ruoli, che in genere vengono assegnati ai gruppi di ruoli Gestione organizzazione e gestione organizzazione di sola visualizzazione .

  • Le procedure descritte in questo argomento non funzionano nel centro sicurezza & Compliance Center PowerShell. Per ulteriori informazioni sulle autorizzazioni nel centro sicurezza & conformità, vedere Permissions in the security & Compliance Center.

  • Le procedure descritte in questo argomento non funzionano in PowerShell di Exchange Online Protection (EOP) autonomo (organizzazioni Microsoft 365 senza cassette postali di Exchange Online). Per ulteriori informazioni sulle autorizzazioni in EOP autonomo, vedere Feature Permissions in EOP.

Tip

Problemi? È possibile richiedere supporto nei forum di Exchange. Visitare il forum all'indirizzo: Exchange Server o Exchange Online.

Utilizzare PowerShell per trovare le autorizzazioni necessarie per eseguire un cmdlet

  1. Aprire l'ambiente di PowerShell in cui si desidera eseguire il cmdlet.

  2. Eseguire il seguente comando per identificare il cmdlet e, se si desidera, uno o più parametri del cmdlet. Assicurarsi di sostituire <Cmdlet> e facoltativamente, <Parameter1>,<Parameter2>,... con i nomi dei cmdlet e dei parametri effettivi che vi interessano. Se si specificano più parametri separati da virgole, vengono restituiti solo i ruoli che includono tutti i parametri.

    $Perms = Get-ManagementRole -Cmdlet <Cmdlet> [-CmdletParameters <Parameter1>,<Parameter2>,...]
    
  3. Eseguire il comando seguente:

    $Perms | foreach {Get-ManagementRoleAssignment -Role $_.Name -Delegating $false | Format-Table -Auto Role,RoleAssigneeType,RoleAssigneeName}
    

Interpretazione dei risultati

I risultati contengono le seguenti informazioni:

  • Role: indica il ruolo che consente di accedere al cmdlet o la combinazione di cmdlet e parametri. I nomi dei ruoli che iniziano con il prefisso "My" sono ruoli utente che consentono agli utenti di operare sugli oggetti di cui sono proprietari (ad esempio, la propria cassetta postale o i propri gruppi di distribuzione).

  • RoleAssigneeType e RoleAssigneeName Il: questi valori sono correlati tra loro. RoleAssigneeType è il tipo di oggetto per il quale il ruolo dispone dell'assegnazione e RoleAssigneeName è il nome dell'oggetto. RoleAssigneeType può essere un gruppo di ruoli, un criterio di assegnazione dei ruoli, un gruppo di protezione o un utente. In genere, i ruoli di amministratore vengono assegnati ai gruppi di ruoli.

Risoluzione dei problemi

Cosa fare se non sono presenti risultati

  • Verificare di avere immesso i nomi dei cmdlet e dei parametri correttamente.

  • Potrebbe essere stata immessa una quantità eccessiva di parametri e tutti i parametri del cmdlet non sono definiti in un singolo ruolo. Provare a specificare solo il nome del cmdlet nel passaggio 2 ed eseguire il passaggio 3 per verificare che il cmdlet sia disponibile nel proprio ambiente. Quindi, aggiungere un parametro per volta nel passaggio 2 prima di eseguire il passaggio 3.

  • Queste possibili cause hanno la stessa soluzione:

    • Potrebbero essere stati immessi cmdlet o parametri definiti in un ruolo che non è assegnato a nessuno per impostazione predefinita.

    • Potrebbe essere stato immesso un cmdlet o un parametro non disponibile nell'ambiente. Ad esempio, quando si immette un cmdlet o dei parametri di Exchange Online in un ambiente di Exchange 2016 locale.

    Eseguire il seguente comando per trovare il ruolo che contiene il cmdlet o i parametri. Assicurarsi di sostituire <Cmdlet> e facoltativamente, <Parameter1>,<Parameter2>,... con i nomi dei cmdlet e dei parametri effettivi che vi interessano. È possibile usare caratteri jolly (*) nei nomi del cmdlet e dei parametri (ad esempio, *-Mailbox*).

    Get-ManagementRoleEntry -Identity *\<Cmdlet>  [-Parameters <Parameter1>,<Parameter2>,... ]
    
    • Se il comando restituisce un errore che informa che non è stato possibile trovare l'oggetto, il cmdlet o i parametri non sono disponibili nell'ambiente.

    • Se il comando restituisce una o più voci per il nome, il ruoloe i parametri, il cmdlet (o i parametri del cmdlet) è disponibile nell'ambiente, ma il ruolo richiesto non è assegnato a nessuno. Per visualizzare tutti i ruoli che non sono stati assegnati a nessuno, eseguire il comando riportato di seguito:

      $na = Get-ManagementRole ; $na | foreach {If ((Get-ManagementRoleAssignment -Role $_.Name -Delegating $false) -eq $null) {$_.Name}}
      
  • Gli ambiti dei ruoli di gestione definiscono dove possono operare i cmdlet (in particolare, gli ambiti di scrittura).

    Per includere informazioni sull'ambito nel passaggio 2, sostituire il seguente comando:

    $Perms | foreach {Get-ManagementRoleAssignment -Role $_.Name -Delegating $false | Format-List Role,RoleAssigneeType,RoleAssigneeName,*Scope*}
    
  • Per visualizzare tutti i ruoli assegnati a un utente specifico, eseguire il comando seguente:

    Get-ManagementRoleAssignment -RoleAssignee <UserIdentity> -Delegating $false | Format-Table -Auto Role,RoleAssigneeName,RoleAssigneeType
    

    Ad esempio:

    Get-ManagementRoleAssignment -RoleAssignee julia@contoso.com -Delegating $false | Format-Table -Auto Role,RoleAssigneeName,RoleAssigneeType
    
  • Per visualizzare tutti gli utenti a cui è assegnato un ruolo specifico, eseguire il comando seguente:

    Get-ManagementRoleAssignment -Role "<Role name>" -GetEffectiveUsers -Delegating $false | Where-Object {$_.EffectiveUserName -ne "All Group Members"} | Format-Table -Auto EffectiveUserName,Role,RoleAssigneeName,AssignmentMethod
    

    Ad esempio:

    Get-ManagementRoleAssignment -Role "Mailbox Import Export"  -GetEffectiveUsers -Delegating $false | Where-Object {$_.EffectiveUserName -ne "All Group Members"} | Format-Table -Auto EffectiveUserName,Role,RoleAssigneeName,AssignmentMethod
    
  • Per visualizzare i membri di un gruppo di ruoli specifico, eseguire il comando seguente:

    Get-RoleGroupMember "<Role group name>"
    

    Ad esempio:

    Get-RoleGroupMember "Organization Management"