Obtenir une liste d’utilisateurs de messagerie à l’aide de l’environnement de ligne de commande Exchange Management Shell
Découvrez comment utiliser les applets de commande Exchange Management Shell pour créer un outil qui renvoie la liste des utilisateurs de boîte aux lettres Exchange.
S’applique à : Exchange Online | Exchange Server 2013 | Office 365
L’obtention d’une liste d’utilisateurs Exchange Online, Exchange Online dans Office 365 ou une version d’Exchange à partir d’Exchange 2013 à l’aide d’un outil géré qui appelle une applet de commande de l’environnement de ligne de commande Exchange Management Shell. Tout d’abord, vous établissez une instance d’exécution à distance sur un serveur Exchange. Ensuite, vous exécutez l’applet de commande permettant de récupérer les informations utilisateur dans l’instance d’exécution distante.
Pour vous connecter à l’instance d’exécution distante, vous devez vous authentifier sur le serveur Exchange à l’aide du modèle d’authentification qui répond aux exigences de sécurité de votre organisation.
Cet article fournit des exemples de code qui vous permettent de configurer une instance d’exécution distante et d’exécuter une applet de commande Exchange Management Shell pour obtenir une liste d’utilisateurs d’un serveur Exchange.
Conditions préalables requises pour obtenir une liste d’utilisateurs de boîte aux lettres
Pour effectuer cette tâche, vous avez besoin d’une référence aux espaces de noms suivants :
- System.Collections.ObjectModel
- System.Management.Automation
- System.Management.Automation.Remoting
- System.Management.Automation.Runspaces
Remarque
Lorsque vous utilisez Visual Studio pour créer une application, vous devez ajouter une référence à l’assembly System.Management.Automation.dll vers le projet. Vous trouverez l’assembly dans l’un des emplacements suivants :
- Pour les systèmes d’exploitation Windows XP et Windows Vista, le répertoire d’installation de Windows PowerShell ($PSHOME).
- Pour les systèmes d’exploitation Windows 7 et Windows 8, le dossier suivant : Windows\assembly\GAC_MSIL\System.Management.Automation.
Ne chargez pas le composant logiciel enfichable Gestion Exchange 2013 dans l’espace d’exécution sur les ordinateurs qui exécutent des applications qui automatisent les applets de commande de l’environnement de ligne de commande Exchange Management Shell. L’application doit créer à la place une instance d’exécution distante, comme décrit plus loin dans cet article.
Se connecter à une instance d’exécution distante sur un serveur Exchange
La méthode que vous utilisez pour vous connecter à une instance d’exécution distante pour exécuter l’applet de commande Exchange Management Shell varie selon le modèle d’authentification choisi. Cette section fournit des exemples de code qui illustrent la procédure de connexion à une instance d’exécution distante lorsque vous utilisez une méthode d’authentification répertoriée dans le tableau suivant.
Méthode d'authentification | S’applique à | URI |
---|---|---|
Se connecter à une instance d’exécution distante sur Exchange Online à l’aide de l’authentification de base | Serveurs Exchange Online | https://outlook.office365.com/PowerShell-LiveID https://<server>/PowerShell-LiveID |
Se connecter à une instance d’exécution distante à l’aide de l’authentification des certificats | Exchange Online et serveurs locaux Exchange | https://outlook.office365.com/PowerShell https://<server>/PowerShell http://<server>/PowerShell |
Se connecter à un espace d’exécution à distance sur un serveur Exchange à l’aide de l’authentification Kerberos | Exchange Online et serveurs locaux Exchange | https://<server>/PowerShell http://<server>/PowerShell |
Se connecter à une instance d’exécution distante sur Exchange Online à l’aide de l’authentification de base
L’exemple suivant définit la méthode GetUsersUsingBasicAuth, qui crée une instance d’exécution Exchange Management Shell sur un serveur Exchange Online à l’aide de l’authentification de base. La méthode appelle ensuite la méthode GetUserInformation comme décrit à la section Obtenir une liste d’utilisateurs de boîte aux lettres à partir d’une instance d’exécution distante pour renvoyer la liste des utilisateurs du serveur distant.
Cette méthode requiert les paramètres suivants :
- liveIDConnectionUri – Chaîne qui contient l’URI du serveur Exchange Online qui authentifie l’application. Si Exchange Online est en cours d’Office 365, l’URI est
https://outlook.office365.com/PowerShell-LiveID
; sinon, l’URI esthttps://<servername>/PowerShell-LiveID
. - schemaUri – Chaîne qui contient l’URI du document de schéma qui définit le schéma Exchange Management Shell. L’URI de schéma est
https://schemas.microsoft.com/powershell/Microsoft.Exchange
. - credentials : objet PSCredential qui contient les informations d’identification de l’utilisateur qui exécute l’application.
- count – Nombre d’utilisateurs de boîte aux lettres Exchange à renvoyer.
public Collection<PSObject> GetUsersUsingBasicAuth(
string liveIDConnectionUri, string schemaUri, PSCredential credentials, int count)
{
WSManConnectionInfo connectionInfo = new WSManConnectionInfo(
new Uri(liveIDConnectionUri),
schemaUri, credentials);
connectionInfo.AuthenticationMechanism = AuthenticationMechanism.Basic;
using (Runspace runspace = RunspaceFactory.CreateRunspace(connectionInfo))
{
return GetUserInformation(count, runspace);
}
}
Function GetUsersUsingBasicAuth( _
ByVal LiveIDConnectionUri As String, ByVal ScehmaUri As String, _
ByVal Credentials As PSCredential, ByVal Count As Integer) As Collection(Of PSObject)
Dim ConnectionInfo As WSManConnectionInfo = _
New WSManConnectionInfo(New Uri(LiveIDConnectionUri), ScehmaUri, Credentials)
ConnectionInfo.AuthenticationMechanism = AuthenticationMechanism.Basic
Dim RemoteRunspace As Runspace
RemoteRunspace = RunspaceFactory.CreateRunspace(ConnectionInfo)
Return GetUserInformation(Count, RemoteRunspace)
End Function
Se connecter à une instance d’exécution distante à l’aide de l’authentification des certificats
L’exemple suivant définit la méthode GetUsersUsingCertificate, qui crée une instance d’exécution Exchange Management Shell sur un serveur distant à l’aide d’un certificat. La méthode appelle ensuite la méthode GetUserInformation comme décrit à la section Obtenir une liste d’utilisateurs de boîte aux lettres à partir d’une instance d’exécution distante pour renvoyer la liste des utilisateurs du serveur distant.
Cette méthode requiert les paramètres suivants :
thumbprint – Chaîne qui contient l’empreinte numérique du certificat utilisé pour authentifier l’application.
certConnectionUri – Chaîne qui contient l’URI du serveur qui authentifie le certificat. L’URI correspond à l’une des adresses répertoriées dans le tableau suivant.
Tableau 1. URI certConnectionUri
Serveur URI Serveur Exchange sans SSL http://<servername>/PowerShell
Serveur Exchange avec SSL https://<servername>/PowerShell
Exchange Online dans le cadre d’Office 365 https://outlook.office365.com/PowerShell
schemaUri – Chaîne qui contient l’URI du document de schéma qui définit le schéma Exchange Management Shell. L’URI de schéma est https://schemas.microsoft.com/powershell/Microsoft.Exchange.
count – Nombre d’utilisateurs de boîte aux lettres Exchange à renvoyer.
public Collection<PSObject> GetUsersUsingCertificate(
string thumbprint, string certConnectionUri, string schemaUri, int count)
{
WSManConnectionInfo connectionInfo = new WSManConnectionInfo(
new Uri(certConnectionUri),
schemaUri,
thumbprint)
using (Runspace runspace = RunspaceFactory.CreateRunspace(connectionInfo))
{
return GetUserInformation(count, runspace);
}
}
Function GetUsersUsingCertificate( _
ByVal Thumbprint As String, ByVal CertConnectionUri As String, _
ByVal SchemaUri As String, ByVal Count As Integer) As Collection(Of PSObject)
Dim ConnectionInfo As WSManConnectionInfo
ConnectionInfo = New WSManConnectionInfo(New Uri(CertConnectionUri), SchemaUri, Thumbprint)
Dim RemoteRunspace As Runspace
RemoteRunspace = RunspaceFactory.CreateRunspace(ConnectionInfo)
Return GetUserInformation(Count, RemoteRunspace)
End Function
Se connecter à un espace d’exécution à distance sur un serveur Exchange à l’aide de l’authentification Kerberos
L’exemple suivant définit la méthode GetUsersUsingKerberos, qui crée une instance d’exécution Exchange Management Shell sur un serveur distant à l’aide de l’authentification Kerberos. La méthode appelle ensuite la méthode GetUserInformation comme décrit à la section Obtenir une liste d’utilisateurs de boîte aux lettres à partir d’une instance d’exécution distante pour renvoyer la liste des utilisateurs du serveur distant.
Cette méthode requiert les paramètres suivants :
kerberosUri – Chaîne qui contient l’URI du serveur Kerberos qui authentifie l’application. L’URI correspond à l’une des adresses répertoriées dans le tableau suivant.
Tableau 2. URI kerberosUri
Serveur URI Serveur Exchange sans SSL http://<servername>/PowerShell
Serveur Exchange avec SSL https://<servername>/PowerShell
schemaUri – Chaîne qui contient l’URI du document de schéma qui définit le schéma Exchange Management Shell. L’URI de schéma est https://schemas.microsoft.com/powershell/Microsoft.Exchange.
credentials : objet PSCredential qui contient les informations d’identification de l’utilisateur qui exécute l’application.
count – Nombre d’utilisateurs de boîte aux lettres Exchange à renvoyer.
public Collection<PSObject> GetUsersUsingKerberos(
string kerberosUri, string schemaUri, PSCredential credentials, int count)
{
WSManConnectionInfo connectionInfo = new WSManConnectionInfo(
new Uri(kerberosUri),
schemaUri, credentials);
connectionInfo.AuthenticationMechanism = AuthenticationMechanism.Kerberos;
using (Runspace runspace = RunspaceFactory.CreateRunspace(connectionInfo))
{
return GetUserInformation(count, runspace);
}
}
Function GetUsersUsingKerberos( _
ByVal KerberosUri As String, ByVal ScehmaUri As String, _
ByVal Credentials As PSCredential, ByVal Count As Integer) As Collection(Of PSObject)
Dim ConnectionInfo As WSManConnectionInfo = _
New WSManConnectionInfo(New Uri(KerberosUri), ScehmaUri, Credentials)
ConnectionInfo.AuthenticationMechanism = AuthenticationMechanism.Kerberos
Dim RemoteRunspace As Runspace
RemoteRunspace = RunspaceFactory.CreateRunspace(ConnectionInfo)
Return GetUserInformation(Count, RemoteRunspace)
End Function
Obtenir une liste d’utilisateurs de boîte aux lettres à partir d’une instance d’exécution distante
L’exemple de code suivant définit la méthode GetUserInformation, qui renvoie une collection d’instances PSObject représentant des utilisateurs de boîtes aux lettres Exchange. Cette méthode est appelée par les méthodes GetUsersUsingBasicAuth, GetUsersUsingCertificate et GetUsersUsingKerberos pour renvoyer la liste des utilisateurs à partir du serveur distant.
Cette méthode requiert les paramètres suivants :
- count – Nombre d’utilisateurs de boîte aux lettres Exchange à renvoyer.
- runspace – Instance d’exécution distante établie pour le serveur Exchange distant.
public Collection<PSObject> GetUserInformation(int count, Runspace runspace)
{
using (PowerShell powershell = PowerShell.Create())
{
powershell.AddCommand("Get-Users");
powershell.AddParameter("ResultSize", count);
runspace.Open();
powershell.Runspace = runspace;
return powershell.Invoke();
}
}
Function GetUserInformation(ByVal Count As Integer, ByVal RemoteRunspace As Runspace) As Collection(Of PSObject)
Dim RemotePowerShell As PowerShell = PowerShell.Create
RemotePowerShell.AddCommand("Get-Users")
RemotePowerShell.AddParameter("ResultSize", Count)
' Open the remote runspace on the server.
RemoteRunspace.Open()
' Associate the runspace with the Exchange Management Shell.
RemotePowerShell.Runspace = RemoteRunspace
' Invoke the Exchange Management Shell to run the command.
Return RemotePowerShell.Invoke
End Function
La méthode GetUserInformation ne renvoie pas plus de count utilisateurs de boîte aux lettres. Pour simplifier le code de cet exemple, la méthode ne filtre ni ne limite les utilisateurs de boîte aux lettres qui sont renvoyés.