Obter uma lista de usuários de email usando o Shell de gerenciamento do ExchangeGet a list of mail users by using the Exchange Management Shell

Saiba como usar os cmdlets do Shell de gerenciamento do Exchange para criar uma ferramenta que retorna uma lista de usuários de caixa de correio do Exchange.Learn how to use Exchange Management Shell cmdlets to create a tool that returns a list of Exchange mailbox users.

Aplica-se a: Exchange Online | Exchange Server 2013 | Office 365Applies to: Exchange Online | Exchange Server 2013 | Office 365

Obter uma lista de usuários do Exchange Online, do Exchange Online como parte do Office 365 ou de uma versão do Exchange que comece com o Exchange 2013 usando uma ferramenta gerenciada que chama um cmdlet do Shell de gerenciamento do Exchange é um processo de duas etapas.Getting a list of users from Exchange Online, Exchange Online as part of Office 365, or a version of Exchange starting with Exchange 2013 by using a managed tool that calls an Exchange Management Shell cmdlet is a two-step process. Primeiro, você estabelece um runspace remoto em um servidor Exchange; em seguida, execute o cmdlet para recuperar as informações do usuário no runspace remoto.First, you establish a remote runspace on an Exchange server; then, you run the cmdlet to retrieve the user information in the remote runspace.

Para se conectar ao runspace remoto, você precisa autenticar com o servidor do Exchange usando o esquema de autenticação que atende aos requisitos de segurança da sua organização.To connect to the remote runspace, you have to authenticate with the Exchange server by using the authentication scheme that meets the security requirements of your organization.

Este artigo fornece exemplos de código que você pode usar para configurar um runspace remoto e executar um cmdlet do Shell de gerenciamento do Exchange para obter uma lista de usuários de um servidor Exchange.This article provides code examples that you can use to set up a remote runspace and run an Exchange Management Shell cmdlet to get a list of users from an Exchange server.

Pré-requisitos para obter uma lista de usuários de caixa de correioPrerequisites for getting a list of mailbox users

Para executar essa tarefa, você precisa de uma referência para os seguintes namespaces:To perform this task, you need a reference to the following namespaces:

  • System. Collections. ObjectModelSystem.Collections.ObjectModel
  • System. Management. AutomationSystem.Management.Automation
  • System. Management. Automation. RemotingSystem.Management.Automation.Remoting
  • System. Management. Automation. RunspacesSystem.Management.Automation.Runspaces

Observação

Quando você estiver usando o Visual Studio para criar um aplicativo, você deve adicionar uma referência ao assembly System. Management. Automation. dll para o projeto.When you are using Visual Studio to create an application, you must add a reference to the System.Management.Automation.dll assembly to the project. O assembly pode ser encontrado em um dos seguintes locais:The assembly can be found in one of the following locations:

  • Para os sistemas operacionais Windows XP e Windows Vista, o diretório de instalação do Windows PowerShell ($PSHOME).For Windows XP and Windows Vista operating systems, the Windows PowerShell installation directory ($PSHOME).
  • Para os sistemas operacionais Windows 7 e Windows 8, a seguinte pasta: Windows\assembly\ GAC_MSIL \System.Management.Automation.For the Windows 7 and Windows 8 operating systems, the following folder: Windows\assembly\GAC_MSIL\System.Management.Automation.

Não carregue o snap-in de gerenciamento do Exchange 2013 no runspace em computadores que executam aplicativos que automatizam os cmdlets do Shell de gerenciamento do Exchange.Do not load the Exchange 2013 Management snap-in into the runspace on computers that are running applications that automate Exchange Management Shell cmdlets. Em vez disso, o aplicativo deve criar um runspace remoto, conforme descrito posteriormente neste artigo.The application should instead create a remote runspace, as described later in this article.

Conectar-se a um runspace remoto em um servidor ExchangeConnect to a remote runspace on an Exchange server

O método que você usa para se conectar a um runspace remoto para usar um cmdlet do Shell de gerenciamento do Exchange varia com base no esquema de autenticação que você está usando.The method that you use to connect to a remote runspace to use an Exchange Management Shell cmdlet varies based on the authentication scheme that you are using. Esta seção fornece exemplos de código que mostram como se conectar a um runspace remoto quando você estiver usando um método de autenticação listado na tabela a seguir.This section provides code examples that show how to connect to a remote runspace when you are using an authentication method listed in the following table.

Método de autenticaçãoAuthentication method Aplica-se aApplies to URIURI
Conectar-se a um runspace remoto no Exchange Online usando a autenticação básicaConnect to a remote runspace on Exchange Online by using basic authentication
Servidores do Exchange OnlineExchange Online servers
https://outlook.office365.com/PowerShell-LiveID

https://<server>/PowerShell-LiveID
Conectar-se a um runspace remoto usando a autenticação de certificadoConnect to a remote runspace by using certificate authentication
Servidores locais do Exchange Online e do ExchangeExchange Online and Exchange on-premises servers
https://outlook.office365.com/PowerShell

https://<server>/PowerShell

http://<server>/PowerShell
Conectar-se a um runspace remoto em um servidor do Exchange usando a autenticação KerberosConnect to a remote runspace on an Exchange server by using Kerberos authentication
Servidores locais do Exchange Online e do ExchangeExchange Online and Exchange on-premises servers
https://<server>/PowerShell

http://<server>/PowerShell

Conectar-se a um runspace remoto no Exchange Online usando a autenticação básicaConnect to a remote runspace on Exchange Online by using basic authentication

O exemplo de código a seguir define o método GetUsersUsingBasicAuth , que cria um runspace do Shell de gerenciamento do Exchange em um servidor remoto do Exchange Online usando a autenticação básica.The following code example defines the GetUsersUsingBasicAuth method, which creates an Exchange Management Shell runspace on a remote Exchange Online server by using basic authentication. O método chama o método GetUserInformation , conforme definido na seção obter uma lista de usuários de caixa de correio de um runspace remoto, para retornar uma lista de usuários no servidor remoto.The method then calls the GetUserInformation method, as defined in the section Get a list of mailbox users from a remote runspace, to return a list of users on the remote server.

Este método requer os seguintes parâmetros:This method requires the following parameters:

  • liveIDConnectionUri – Uma cadeia de caracteres que contém o URI do servidor Exchange Online que autenticará o aplicativo.liveIDConnectionUri – A string that contains the URI of the Exchange Online server that will authenticate the application. Se o Exchange Online estiver em execução no Office 365, o URI será https://outlook.office365.com/PowerShell-LiveID ; caso contrário, o URI é https://<servername>/PowerShell-LiveID .If Exchange Online is running in Office 365, the URI is https://outlook.office365.com/PowerShell-LiveID; otherwise, the URI is https://<servername>/PowerShell-LiveID.

  • schemaUri – Uma cadeia de caracteres que contém o URI do documento de esquema que define o esquema do Shell de gerenciamento do Exchange.schemaUri – A string that contains the URI of the schema document that defines the Exchange Management Shell schema. O URI do esquema é https://schemas.microsoft.com/powershell/Microsoft.Exchange .The schema URI is https://schemas.microsoft.com/powershell/Microsoft.Exchange.

  • credenciais – Um objeto PSCredential que contém as credenciais do usuário que está executando o aplicativo.credentials – A PSCredential object that contains the credentials of the user who is running the application.

  • contagem – O número de usuários de caixa de correio do Exchange a serem retornados.count – The number of Exchange mailbox users to return.

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

Conectar-se a um runspace remoto usando a autenticação de certificadoConnect to a remote runspace by using certificate authentication

O exemplo de código a seguir define o método GetUsersUsingCertificate , que cria um runspace do Shell de gerenciamento do Exchange em um servidor remoto usando um certificado.The following code example defines the GetUsersUsingCertificate method, which creates an Exchange Management Shell runspace on a remote server by using a certificate. O método chama o método GetUserInformation , conforme definido na seção obter uma lista de usuários de caixa de correio de um runspace remoto, para retornar uma lista de usuários no servidor remoto.The method then calls the GetUserInformation method, as defined in the section Get a list of mailbox users from a remote runspace, to return a list of users on the remote server.

Este método requer os seguintes parâmetros:This method requires the following parameters:

  • impressão digital – Uma cadeia de caracteres que contém a impressão digital do certificado usado para autenticar o aplicativo.thumbprint – A string that contains the thumbprint of the certificate that is used to authenticate the application.

  • certConnectionUri – Uma cadeia de caracteres que contém o URI do servidor que autenticará o certificado.certConnectionUri – A string that contains the URI of the server that will authenticate the certificate. O URI será um dos listados na tabela a seguir.The URI will be one of those listed in the following table.

    Tabela 1. URIs certConnectionUriTable 1. certConnectionUri URIs

    ServidorServer URIURI
    Exchange Server sem usar SSLExchange server without using SSL
    http://<servername>/PowerShell
    Servidor Exchange usando SSLExchange server using SSL
    https://<servername>/PowerShell
    Exchange Online como parte do Office 365Exchange Online as part of Office 365
    https://outlook.office365.com/PowerShell
  • schemaUri – Uma cadeia de caracteres que contém o URI do documento de esquema que define o esquema do Shell de gerenciamento do Exchange.schemaUri – A string that contains the URI of the schema document that defines the Exchange Management Shell schema. O URI do esquema é https://schemas.microsoft.com/powershell/Microsoft.Exchange .The schema URI is https://schemas.microsoft.com/powershell/Microsoft.Exchange.

  • contagem – O número de usuários de caixa de correio do Exchange a serem retornados.count – The number of Exchange mailbox users to return.

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

Conectar-se a um runspace remoto em um servidor do Exchange usando a autenticação KerberosConnect to a remote runspace on an Exchange server by using Kerberos authentication

O exemplo de código a seguir define o método GetUsersUsingKerberos , que cria um runspace do Shell de gerenciamento do Exchange em um servidor remoto usando a autenticação Kerberos.The following code example defines the GetUsersUsingKerberos method, which creates an Exchange Management Shell runspace on a remote server by using Kerberos authentication. O método chama o método GetUserInformation , conforme definido na seção obter uma lista de usuários de caixa de correio de um runspace remoto, para retornar uma lista de usuários no servidor remoto.The method then calls the GetUserInformation method, as defined in the section Get a list of mailbox users from a remote runspace, to return a list of users on the remote server.

Este método requer os seguintes parâmetros:This method requires the following parameters:

  • kerberosUri – Uma cadeia de caracteres que contém o URI do servidor Kerberos que autenticará o aplicativo.kerberosUri – A string that contains the URI of the Kerberos server that will authenticate the application. O URI será um dos listados na tabela a seguir.The URI will be one of those listed in the following table.

    Tabela 2. URIs kerberosUriTable 2. kerberosUri URIs

    ServidorServer URIURI
    Exchange Server sem usar SSLExchange server without using SSL
    http://<servername>/PowerShell
    Servidor Exchange usando SSLExchange server using SSL
    https://<servername>/PowerShell
  • schemaUri – Uma cadeia de caracteres que contém o URI do documento de esquema que define o esquema do Shell de gerenciamento do Exchange.schemaUri – A string that contains the URI of the schema document that defines the Exchange Management Shell schema. O URI do esquema é https://schemas.microsoft.com/powershell/Microsoft.Exchange .The schema URI is https://schemas.microsoft.com/powershell/Microsoft.Exchange.

  • credenciais – Um objeto PSCredential que contém as credenciais do usuário que está executando o aplicativo.credentials – A PSCredential object that contains the credentials of the user who is running the application.

  • contagem – O número de usuários de caixa de correio do Exchange a serem retornados.count – The number of Exchange mailbox users to return.

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

Obter uma lista de usuários de caixa de correio de um runspace remotoGet a list of mailbox users from a remote runspace

O exemplo de código a seguir define o método GetUserInformation , que retorna uma coleção de instâncias de PSObject que representam usuários de caixa de correio do Exchange.The following code example defines the GetUserInformation method, which returns a collection of PSObject instances that represent Exchange mailbox users. Este método é chamado pelos métodos GetUsersUsingBasicAuth, GetUsersUsingCertificatee GetUsersUsingKerberos para retornar a lista de usuários do servidor remoto.This method is called by the GetUsersUsingBasicAuth, GetUsersUsingCertificate, and GetUsersUsingKerberos methods to return the list of users from the remote server.

Este método requer os seguintes parâmetros:This method requires the following parameters:

  • contagem – O número de usuários de caixa de correio do Exchange a serem retornados.count – The number of Exchange mailbox users to return.

  • runspace – O runspace remoto estabelecido para o servidor Exchange remoto.runspace – The remote runspace that is established for the remote Exchange server.

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

O método GetUserInformation retornará não mais do que contagem usuários de caixa de correio.The GetUserInformation method will return no more than count mailbox users. Para simplificar o código para este exemplo, o método não filtra ou limita os usuários de caixa de correio que são retornados.To simplify the code for this example, the method does not filter or otherwise limit the mailbox users that are returned.

Confira tambémSee also