Contrôler l’accès PowerShell à distance aux serveurs Exchange

PowerShell à distance dans Microsoft Exchange vous permet de gérer votre organization Exchange à partir d’un ordinateur distant qui se trouve sur votre réseau interne ou à partir d’Internet. Vous pouvez désactiver ou activer la capacité d’un utilisateur à se connecter à un serveur Exchange à l’aide de PowerShell distant et d’Exchange Management Shell. Pour plus d’informations sur PowerShell distant, consultez Exchange Server PowerShell (Exchange Management Shell).

Pour découvrir d'autres tâches de gestion relatives à l'environnement PowerShell distant, voir Connexion aux serveurs Exchange à l'aide de l'environnement PowerShell à distance.

Ce qu'il faut savoir avant de commencer

  • Durée d’exécution estimée de chaque procédure : moins de 5 minutes

  • Par défaut, tous les comptes d'utilisateurs ont accès à PowerShell à distance. Toutefois, pour pouvoir effectivement utiliser l'environnement PowerShell distant pour se connecter à un serveur Exchange, l'utilisateur doit être membre d'un groupe de rôles de gestion ou se voir directement attribué un rôle de gestion qui permet aux utilisateurs d'exécuter les cmdlets Exchange. Pour plus d’informations sur les groupes de rôles et les rôles de gestion, consultez autorisations Exchange Server.

    Importante

    Dans votre hâte de désactiver rapidement et globalement l’accès PowerShell distant dans votre organization, méfiez-vous des commandes comme Get-User | Set-User -RemotePowerShellEnabled $false sans prendre en compte les comptes d’administrateur, les comptes de service ou les boîtes aux lettres de surveillance de l’intégrité qui nécessitent un accès à distance à PowerShell. Utilisez les procédures décrites dans cet article pour supprimer de manière sélective l’accès à distance à PowerShell ou conserver l’accès pour ceux qui en ont besoin à l’aide de la syntaxe suivante dans votre commande de suppression globale : Get-User | Where-Object {$_.UserPrincipalName -ne 'admin1@contoso.com' -and $_.UserPrincipalName -ne 'admin2@contoso.com'...} | Set-User -RemotePowerShellEnabled $false.

    Si vous vous verrouillez accidentellement de l’accès à distance à PowerShell, vous devez utiliser la méthode par ailleurs fortement déconseillée de charger directement le composant logiciel enfichable Exchange Management Shell (Add-PSSnapIn Microsoft.Exchange.Management.PowerShell.SnapIn) pour vous accorder l’accès. Réduisez le temps et les modifications que vous utilisez avec cette méthode. Corrigez un compte et ouvrez Exchange Management Shell pour apporter des modifications supplémentaires.

  • Vous pouvez uniquement utiliser PowerShell pour effectuer ces procédures. Pour en savoir plus sur l'ouverture de l'environnement de ligne de commande Exchange Management Shell dans votre organisation Exchange locale, consultez la rubrique Open the Exchange Management Shell.

  • Pour plus d’informations sur la syntaxe de filtre OPATH dans Exchange, consultez Informations supplémentaires sur la syntaxe OPATH.

  • Des autorisations doivent vous être attribuées avant de pouvoir exécuter cette procédure. Pour connaître les autorisations dont vous avez besoin, consultez l’entrée « Remote PowerShell » dans l’article Infrastructure Exchange et autorisations PowerShell .

  • Si vous utilisez des outils tiers pour personnaliser les adresses e-mail des utilisateurs, vous devez désactiver les stratégies d’adresse de messagerie sur les utilisateurs concernés avant d’effectuer les procédures décrites dans cet article. Si ce n’est pas le cas, les commandes Set-User modifient les adresses e-mail des utilisateurs pour qu’elles correspondent à la stratégie d’adresse e-mail applicable. Pour désactiver les stratégies d’adresse e-mail sur les utilisateurs, définissez la valeur du paramètre EmailAddressPolicyEnabled sur $false sur l’applet de commande Set-Mailbox .

Conseil

Vous rencontrez des difficultés ? Demandez de l’aide sur les forums Exchange Server.

Afficher l’accès PowerShell distant pour les utilisateurs

Pour afficher les status d’accès PowerShell distant pour un utilisateur spécifique, remplacez UserIdentity> par <le nom ou le nom d’utilisateur principal (UPN) de l’utilisateur, puis exécutez la commande suivante :

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

Pour afficher le status d’accès PowerShell distant pour tous les utilisateurs, exécutez la commande suivante :

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

Pour afficher tous les utilisateurs qui n’ont pas accès à PowerShell distant, exécutez la commande suivante :

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

Pour afficher tous les utilisateurs qui ont accès à powerShell distant, exécutez la commande suivante :

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

Utiliser l'Environnement de ligne de commande Exchange Management Shell pour activer ou désactiver l'accès à PowerShell à distance pour un utilisateur

Cet exemple montre comment désactiver l’accès PowerShell distant pour l’utilisateur nommé Therese Lindqvist.

Set-User "Therese Lindqvist" -RemotePowerShellEnabled $false

Cet exemple active l'accès à PowerShell à distance pour l'utilisateur nommé Sirirat Kitjakarn.

Set-User "Sirirat Kitjakarn" -RemotePowerShellEnabled $true

Utiliser Exchange Management Shell pour désactiver l’accès à distance à PowerShell pour de nombreux utilisateurs

Pour bloquer l’accès d’un groupe spécifique d’utilisateurs via un environnement PowerShell distant, vous disposez des options suivantes :

  • Filtrer les utilisateurs en fonction d’un attribut existant : cette méthode suppose que les comptes d’utilisateur cibles partagent tous un attribut filtrable unique. Certains attributs, tels que le titre, le service, les informations d'adresse et le numéro de téléphone sont visibles uniquement lorsque vous utilisez la cmdlet Get-User. D'autres attributs, tels que CustomAttribute1-15, sont visibles uniquement lorsque vous utilisez la cmdlet Get-Mailbox.

  • Utiliser une liste d’utilisateurs spécifiques : une fois que vous avez généré la liste des utilisateurs spécifiques, vous pouvez utiliser cette liste pour désactiver leur accès à PowerShell distant.

Filtrer les utilisateurs en fonction d’un attribut existant

Pour désactiver l’accès à powerShell distant pour un nombre quelconque d’utilisateurs en fonction d’un attribut existant, utilisez la syntaxe suivante :

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

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

Cet exemple supprime l’accès à powerShell distant pour tous les utilisateurs dont l’attribut Title contient la valeur « Sales Associate ».

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

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

Utiliser une liste d’utilisateurs spécifiques

Pour désactiver l’accès à powerShell distant pour une liste d’utilisateurs spécifiques, utilisez la syntaxe suivante :

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

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

Cet exemple utilise le fichier texte C:\My Documents\NoPowerShell.txt pour identifier les utilisateurs par leur nom d’utilisateur principal (UPN). Le fichier texte doit contenir un UPN sur chaque ligne, comme suit :

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

Après avoir rempli le fichier texte avec les comptes d’utilisateur que vous souhaitez mettre à jour, exécutez les commandes suivantes :

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

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