Controllare l'accesso tramite PowerShell remoto ai server Exchange

PowerShell remoto in Microsoft Exchange consente di gestire l'organizzazione di Exchange da un computer remoto nella rete interna o da Internet. È possibile disabilitare o abilitare la capacità di un utente di connettersi a un server Exchange utilizzando PowerShell remoto ed Exchange Management Shell. Per ulteriori informazioni su PowerShell remoto, vedere PowerShell di Exchange Server (Exchange Management Shell).

Per altre attività di gestione relative a Remote PowerShell, vedere Connessione ai server di Exchange tramite Remote PowerShell.

Che cosa è necessario sapere prima di iniziare?

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

  • Per impostazione predefinita, tutti gli account utente hanno accesso a Remote PowerShell. Tuttavia, per utilizzare effettivamente PowerShell per connettersi a un server Exchange, gli utenti devono essere membri di un gruppo di ruoli di gestione oppure essere assegnati direttamente a un ruolo di gestione che consenta all'utente di eseguire i cmdlet Exchange. Per ulteriori informazioni sui gruppi di ruoli e i ruoli di gestione, vedere Autorizzazioni di Exchange Server.

    Importante

    Quando si ha fretta di disabilitare rapidamente e globalmente l'accesso remoto a PowerShell nell'organizzazione, fare attenzione a comandi come Get-User | Set-User -RemotePowerShellEnabled $false senza considerare gli account amministratore, gli account di servizio o le cassette postali di monitoraggio dell'integrità che richiedono l'accesso remoto a PowerShell. Usare le procedure di questo articolo per rimuovere in modo selettivo l'accesso remoto a PowerShell o per garantire l'accesso a chi ne ha bisogno usando la sintassi seguente nel comando di rimozione globale: Get-User | Where-Object {$_.UserPrincipalName -ne 'admin1@contoso.com' -and $_.UserPrincipalName -ne 'admin2@contoso.com'...} | Set-User -RemotePowerShellEnabled $false.

    Se si blocca accidentalmente l'accesso remoto a PowerShell, sarà necessario utilizzare il metodo, altrimenti altamente sconsigliato, che consiste nel caricare direttamente lo snap-in Exchange Management Shell (Add-PSSnapIn Microsoft.Exchange.Management.PowerShell.SnapIn) per ottenere l'accesso. Ridurre al minimo il tempo e le modifiche utilizzate con questo metodo. Correggere un account e aprire Exchange Management Shell per apportare eventuali ulteriori modifiche.

  • È possibile usare solo PowerShell per eseguire queste procedure. Per sapere come aprire Exchange Management Shell nell'organizzazione di Exchange locale, vedere Open the Exchange Management Shell.

  • Per informazioni dettagliate sulla sintassi del filtro OPATH in Exchange, vedere Ulteriori informazioni sulla sintassi OPATH.

  • Devi disporre delle autorizzazioni per poter eseguire queste procedure. Per visualizzare le autorizzazioni necessarie, vedere la voce "PowerShell remoto" nell'articolo sulle autorizzazioni dell'infrastruttura di Exchange e PowerShell .

  • Se si usano strumenti non Microsoft per personalizzare gli indirizzi di posta elettronica degli utenti, è necessario disabilitare i criteri degli indirizzi di posta elettronica per gli utenti interessati prima di eseguire le procedure descritte in questo articolo. In caso contrario, i comandi Set-User modificano gli indirizzi e-mail degli utenti in modo che corrispondano al criterio dell'indirizzo e-mail applicabile. Per disabilitare i criteri degli indirizzi di posta elettronica per gli utenti, impostare il valore del parametro EmailAddressPolicyEnabled su $false nel cmdlet Set-Mailbox .

Consiglio

Problemi? Chiedere assistenza nei forum di Exchange Server.

Visualizzare l'accesso remoto a PowerShell per gli utenti

Per visualizzare lo stato di accesso remoto a PowerShell per un utente specifico, sostituire <UserIdentity> con il nome o il nome dell'entità utente (UPN) dell'utente e quindi eseguire il comando seguente:

Get-User -Identity "<UserIdentity>" | Format-List RemotePowerShellEnabled

Per visualizzare lo stato di accesso remoto a PowerShell per tutti gli utenti, usare il comando seguente:

Get-User -ResultSize unlimited | Format-Table Name,DisplayName,RemotePowerShellEnabled -AutoSize

Per visualizzare tutti gli utenti che non hanno accesso a PowerShell remoto, eseguire il comando seguente:

Get-User -ResultSize unlimited -Filter 'RemotePowerShellEnabled -eq $false'

Per visualizzare tutti gli utenti che hanno accesso a PowerShell remoto, usare il comando seguente:

Get-User -ResultSize unlimited -Filter 'RemotePowerShellEnabled -eq $true'

Utilizzare Exchange Management Shell per abilitare o disabilitare l'accesso remoto PowerShell per un utente

In questo esempio viene disabilitato l'accesso remoto a PowerShell per l'utente Therese Lindqvist.

Set-User "Therese Lindqvist" -RemotePowerShellEnabled $false

In questo esempio viene abilitato l'accesso remoto PowerShell per l'utente denominato Sirirat Kitjakarn.

Set-User "Sirirat Kitjakarn" -RemotePowerShellEnabled $true

Usare Exchange Management Shell per disabilitare l'accesso remoto a PowerShell per molti utenti

Per impedire l'accesso tramite PowerShell remoto a uno specifico gruppo di utenti esistenti sono disponibili diverse opzioni:

  • Filtra gli utenti in base a un attributo esistente: questo metodo presuppone che gli account utente di destinazione condividano tutti un attributo filtrabile univoco. Alcuni attributi, ad esempio quelli relativi a qualifica, reparto, indirizzo e numero di telefono, sono visibili solo quando si utilizza il cmdlet Get-User. Altri attributi, ad esempio CustomAttribute1-15, sono visibili solo quando si utilizza il cmdlet Get-Mailbox.

  • Usare un elenco di utenti specifici: dopo aver generato l'elenco di utenti specifici, è possibile usarlo per disabilitarne l'accesso a PowerShell remoto.

Filtrare gli utenti in base a un attributo esistente

Per disabilitare l'accesso a PowerShell remoto per un numero qualsiasi di utenti in base a un attributo esistente, usare la sintassi seguente:

$<VariableName> = <Get-Mailbox | Get-User> -ResultSize unlimited -Filter <Filter>

$<VariableName> | foreach {Set-User -Identity $_ -RemotePowerShellEnabled $false}

In questo esempio viene rimosso l'accesso a PowerShell remoto per tutti gli utenti il cui attributo Title contiene il valore "Sales Associate".

$DSA = Get-User -ResultSize unlimited -Filter "(RecipientType -eq 'UserMailbox') -and (Title -like '*Sales Associate*')"

$DSA | foreach {Set-User -Identity $_ -RemotePowerShellEnabled $false}

Utilizzare un elenco di utenti specifici

Per disabilitare l'accesso a PowerShell remoto per un elenco di utenti specifici, usare la sintassi seguente:

$<VariableName> = Get-Content <text file>

$<VariableName> | foreach {Set-User -Identity $_ -RemotePowerShellEnabled $false}

In questo esempio viene usato il file di testo C:\My Documents\NoPowerShell.txt per identificare gli utenti in base al nome dell'entità utente (UPN). Il file di testo deve contenere un UPN in ogni riga, ad esempio:

akol@contoso.com
tjohnston@contoso.com
kakers@contoso.com

Dopo aver inserito nel file di testo gli account utente da aggiornare, eseguire i comandi seguenti:

$NPS = Get-Content "C:\My Documents\NoPowerShell.txt"

$NPS | foreach {Set-User -Identity $_ -RemotePowerShellEnabled $false}