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.

Consiglio

Attualmente, le procedure in questo articolo non funzionano con i cmdlet del gruppo di Microsoft 365 (*-UnifiedGroup) in Exchange Online PowerShell.

Che cosa è necessario sapere prima di iniziare?

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

  • È possibile usare PowerShell solo per eseguire queste procedure.

  • 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 dai ruoli View-Only Configuration o Role Management in Exchange Online, assegnati solo ai gruppi di ruoli View-Only Organization Management e Organization Management per impostazione predefinita.

    Nelle organizzazioni basate sul cloud, l'appartenenza al ruolo Amministratori globali in Microsoft Entra ID offre le autorizzazioni necessarie.

  • Le procedure descritte in questo articolo non funzionano in PowerShell sicurezza & conformità. Per altre informazioni sulle autorizzazioni di sicurezza & conformità, vedere gli articoli seguenti:

Consiglio

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

Utilizzare PowerShell per trovare le autorizzazioni necessarie per eseguire un cmdlet

  1. Se non è già stato fatto, aprire l'ambiente PowerShell di Exchange a cui si è interessati:

  2. Sostituire <Cmdlet> e, facoltativamente, <Parameter1>,<Parameter2>,... con i valori che si desidera usare ed eseguire il comando seguente:

    $Perms = Get-ManagementRole -Cmdlet <Cmdlet> [-CmdletParameters <Parameter1>,<Parameter2>,...]
    

Consiglio

Se si specificano più parametri, vengono restituiti solo i ruoli che includono tutti i parametri specificati nel cmdlet.

  1. Eseguire il comando riportato di seguito:

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

Interpretazione dei risultati

I risultati contengono le seguenti informazioni:

  • Ruolo: indica il ruolo che consente l'accesso al cmdlet o alla combinazione di cmdlet e parametri. I nomi di ruolo che iniziano con "My" sono ruoli utente che consentono agli utenti normali di operare su oggetti di loro proprietà (ad esempio, la propria cassetta postale o i relativi gruppi di distribuzione).

  • RoleAssigneeType e RoleAssigneeName: questi valori sono correlati tra loro:

    • RoleAssigneeType è il tipo di oggetto a cui è assegnato il ruolo. Per i ruoli di amministratore, questo valore è in genere un gruppo di ruoli, ma può anche essere un criterio di assegnazione di ruolo, un gruppo di sicurezza o un utente.
    • RoleAssigneeName è il nome del gruppo di ruoli, dei criteri di assegnazione dei ruoli, del gruppo di sicurezza o dell'utente.

Risoluzione dei problemi

Cosa fare se non sono presenti risultati

  • Verificare di avere immesso i nomi dei cmdlet e dei parametri correttamente.
  • È possibile che più parametri per un cmdlet non siano definiti in un singolo ruolo (alcuni parametri potrebbero trovarsi in un ruolo, mentre gli altri sono in un ruolo diverso). Eseguire un passaggio alla volta:
    • Eseguire il primo comando senza parametri e quindi eseguire il secondo comando.
    • Aggiungere un parametro al primo comando e quindi eseguire il secondo comando.
    • Ripetere il passaggio precedente aggiungendo altri parametri al primo comando prima di eseguire il secondo comando.

In caso contrario, è probabile che nessuno dei risultati sia causato da una delle condizioni seguenti:

  • Il cmdlet o i parametri sono definiti in un ruolo che non viene assegnato ad alcun gruppo di ruoli per impostazione predefinita.
  • Il cmdlet o i parametri non sono disponibili nell'ambiente. Ad esempio, è stato specificato un cmdlet Exchange Online o parametri Exchange Online in un ambiente Exchange locale.

Per trovare i ruoli nell'ambiente (se presenti) che contengono il cmdlet o i parametri, sostituire <Cmdlet> e facoltativamente <Parameter1>,<Parameter2>,... con i valori che si desidera usare ed eseguire il comando seguente:

Get-ManagementRoleEntry -Identity *\<Cmdlet> [-Parameters <Parameter1>,<Parameter2>,...]

Consiglio

È possibile usare caratteri jolly (*) nei nomi dei cmdlet e dei parametri , *-Mailbox*ad esempio .

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 risultati, il cmdlet o i parametri sono disponibili nell'ambiente, ma il ruolo richiesto non viene assegnato ad alcun gruppo di ruoli. Per trovare i ruoli non assegnati ad alcun gruppo di ruoli, eseguire il comando seguente:

$na = Get-ManagementRole; $na | foreach {If ((Get-ManagementRoleAssignment -Role $_.Name -Delegating $false) -eq $null) {$_.Name}}

Includere gli ambiti del ruolo di gestione

Gli ambiti del ruolo di gestione (in particolare, gli ambiti di scrittura) definiscono dove possono operare i cmdlet. Ad esempio, l'intera organizzazione o solo su oggetti utente specifici.

Per includere informazioni sull'ambito in Usare PowerShell per trovare le autorizzazioni necessarie per eseguire un output del cmdlet, aggiungere *Scope* al secondo comando:

$Perms | foreach {Get-ManagementRoleAssignment -Role $_.Name -Delegating $false | Format-List Role,RoleAssigneeType,RoleAssigneeName,*Scope*}

Per informazioni dettagliate sugli ambiti del ruolo di gestione, vedere Informazioni sugli ambiti del ruolo di gestione.

Trovare tutti i ruoli assegnati a un utente specifico

Per visualizzare tutti i ruoli assegnati a un utente specifico, sostituire <UserIdentity> con il nome, l'alias o l'indirizzo di posta elettronica dell'utente ed 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

Consiglio

Il parametro RoleAssignee restituisce sia assegnazioni di ruolo dirette agli utenti (non comuni) che assegnazioni di ruolo indiretto concesse all'utente tramite l'appartenenza ai gruppi di ruoli.

Trovare tutti gli utenti a cui è assegnato un ruolo specifico

Per visualizzare tutti gli utenti a cui è assegnato un ruolo specifico, sostituire <Role name> con il nome del ruolo ed 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

Trovare i membri di un gruppo di ruoli

Per visualizzare i membri di un gruppo di ruoli specifico, sostituire <Role group name> con il nome del gruppo di ruoli ed eseguire il comando seguente:

Get-RoleGroupMember "<Role group name>"

Ad esempio:

Get-RoleGroupMember "Organization Management"

Consiglio

Per visualizzare i nomi di tutti i gruppi di ruoli disponibili, eseguire Get-RoleGroup.