Compartilhar via


Noções Básicas Sobre Importação e Exportação de Arquivos no Shell de Gerenciamento do Exchange

Aplica-se a: Exchange Server 2010

Tópico modificado em: 2009-12-02

O Microsoft Exchange Server 2010 usa a interface de linha de comando remota Windows PowerShell para estabelecer uma conexão entre o servidor ou estação de trabalho do qual você está administrando o Exchange e o servidor que está executando o Exchange 2010 que você está administrando. No Exchange 2010, isso chama-se Shell de Gerenciamento do Exchange, ou Shell remoto. Mesmo se estiver administrando o servidor local do Exchange 2010, o Shell remoto é usado para estabelecer a conexão. Para obter mais informações sobre o Shell remoto, consulte Visão Geral do Shell de Gerenciamento do Exchange.

Como importar e exportar arquivos de e para um servidor do Exchange mudou no Exchange 2010, devido à implementação do Shell remoto. Este tópico discute por quê esse novo processo é necessário e como importar e exportar arquivos entre um servidor local ou estação de trabalho e um servidor remoto do Exchange 2010. 

Sessões do Windows PowerShell

Para compreender por quê usar uma sintaxe especial para importar e exportar arquivos no Shell remoto, você precisa saber como o Shell é implementado no Exchange 2010. O Shell usa sessões do Windows PowerShell, que são os ambientes em que variáveis, cmdlets e assim por diante, podem compartilhar informações. Sempre que uma janela do Shell é aberta, uma nova sessão é criada. Os cmdlets executados em cada janela podem acessar variáveis e outras informações armazenadas naquela janela, mas não podem acessar variáveis de outras janelas abertas do Shell. Isso ocorre porque cada uma delas está contida em sua própria sessão do Windows PowerShell. Sessões do Windows PowerShell também podem ser chamadas de runspaces.

O Shell remoto no Exchange 2010 tem duas sessões, a sessão local e a sessão remota. A sessão local é a sessão do Windows PowerShell que está sendo executada em seu computador local. Esta sessão contém todos os cmdlets que acompanham o Windows PowerShell. Também tem acesso ao seu sistema local de arquivos.

A sessão remota é a sessão do Windows PowerShell que está sendo executada no servidor remoto do Exchange. Esta sessão é onde todos os cmdlets do Exchange são executados. Tem acesso ao sistema de arquivos do servidor do Exchange.

Ao se conectar ao servidor remoto do Exchange, uma conexão é feita entre sua sessão local e a sessão remota no servidor do Exchange. Esta conexão permite que você execute cmdlets do Exchange no servidor remoto do Exchange em sua sessão local, embora seu computador local não tenha nenhum cmdlet do Exchange instalado.

Importante

Mesmo se o Shell for aberto em um servidor do Exchange 2010, o mesmo processo de conexão acontece e duas sessões são criadas. Isso significa que você deve usar a mesma sintaxe nova para importar e exportar arquivos se estiver abrindo o Shell em um servidor do Exchange 2010 ou em uma estação de trabalho cliente remota. 

Os cmdlets do Exchange que são executados na sessão remota no servidor remoto do Exchange, não têm acesso ao seu sistema local de arquivos. Isso significa que não é possível usar cmdlets do Exchange, sozinhos, para importar ou exportar arquivos de ou para seu sistema local de arquivos. É necessário usar uma sintaxe adicional para transferir arquivos para e de seu sistema local de arquivos, para que os cmdlets do Exchange executados no servidor remoto do Exchange possam usar os dados. Para obter mais informações sobre a sintaxe exigida, consulte "Importar e Exportar Arquivos no Shell Remoto", posteriormente neste tópico.

Dica

Importar e exportar arquivos em servidores de Transporte de Borda não requer qualquer sintaxe especial. Para obter mais informações sobre a função de servidor Transporte de Borda, consulte "Importar e Exportar Arquivos em Servidores de Transporte de Borda", posteriormente neste tópico.

Importar e Exportar Arquivos no Shell Remoto

O Shell remoto é usado nas funções de servidor Caixa de Correio, Transporte de Hub, Unificação de Mensagens e Acesso para Cliente no Exchange 2010. Importar e exportar arquivos exige uma sintaxe específica porque elas usam o Shell remoto. O servidor de Transporte de Borda usa o Shell local e usa uma sintaxe diferente. Para obter mais informações sobre a função de servidor Transporte de Borda, consulte "Importar e Exportar Arquivos em Servidores de Transporte de Borda", posteriormente neste tópico.

Importar Arquivos no Shell Remoto

A sintaxe para importar arquivos no Exchange 2010 é usada sempre que você desejar enviar um arquivo para um cmdlet executado em um servidor do Exchange 2010, a partir do seu computador ou servidor local. Cmdlets que aceitam dados de um arquivo em seu computador local terão um parâmetro chamado FileData (ou algo parecido). Para determinar o parâmetro correto a ser usado, consulte as informações da Ajuda para o cmdlet que está utilizando.

O Shell deve saber qual arquivo você deseja enviar para o cmdlet do Exchange 2010, e qual parâmetro aceitará os dados. Para isso, use a sintaxe a seguir.

<Cmdlet> -FileData ([Byte[]]$(Get-Content -Path <local path to file> -Encoding Byte -ReadCount 0))

Por exemplo, o comando a seguir importa o arquivo C:\MyData.dat para o parâmetro FileData, no cmdlet fictício Import-SomeData.

Import-SomeData -FileData (Byte[]]$(Get-Content -Path "C:\MyData.dat" -Encoding Byte -ReadCount 0))

Quando o comando é executado, ocorrem as seguintes ações:

  1. O comando é aceito pelo Shell remoto.
  2. O Shell remoto avalia o comando e determina que existe um comando embutido no valor fornecido para o parâmetro FileData.
  3. O Shell remoto interrompe a avaliação do comando Import-SomeData e executa o comando Get-Content. O comando Get-Content lê os dados do arquivo MyData.dat.
  4. O Shell remoto armazena temporariamente os dados do comando Get-Content como um objeto Byte[], para que possa ser passado para o cmdlet Import-SomeData.
  5. A execução do comando Import-SomeData é retomada. O Shell remoto envia a solicitação para executar o cmdlet Import-SomeData no servidor remoto do Exchange 2010, junto com o objeto criado pelo cmdletGet-Content.
  6. No servidor remoto do Exchange 2010, o cmdlet Import-SomeData é executado e os dados armazenados no objeto temporário criado pelo cmdlet Get-Content são passados para o parâmetro FileData. O cmdlet Import-SomeData processa a entrada e executa as ações necessárias.

Alguns cmdlets usam a seguinte sintaxe alternativa, que atinge o mesmo objetivo da sintaxe anterior.

[Byte[]]$Data = Get-Content -Path <local path to file> -Encoding Byte -ReadCount 0
Import-SomeData -FileData $Data

O mesmo processo ocorre com essa sintaxe alternativa. A única diferença é que, ao invés de executar toda a operação de uma vez, os dados recuperados do arquivo local são armazenados em uma variável que pode ser referenciada depois da sua criação. A variável é então usada no comando de importação, para passar o conteúdo do arquivo local para o cmdlet Import-SomeData. Usar esse processo de duas etapas é útil quando você deseja usar os dados do arquivo local em mais de um comando.

Há limitações que devem ser considerados na importação de arquivos. Para obter mais informações, consulte "Limitações na Importação de Arquivos", posteriormente neste tópico.

Para obter informações específicas sobre como importar dados para o Exchange 2010, consulte os tópicos da Ajuda para o recurso que está gerenciando.

Limitações na Importação de Arquivos

Limites devem ser definidos ao importar dados no Shell remoto, para preservar a integridade dos dados que estão sendo transferidos. Transferências em andamento não podem continuar se forem interrompidas. Além disso, como os dados que estão sendo transferidos são armazenados na memória do servidor remoto, o servidor deve estar protegido contra o esgotamento da memória causado por volumes excessivamente grandes de dados.

Por essas razões, o volume de dados transferido para um servidor remoto do Exchange 2010 de um computador ou servidor local é limitado a:

  • 500 megabytes (MB) para cada cmdlet executado
  • 75 MB para cada objeto passado para um cmdlet

Se esses valores forem excedidos, a execução do cmdlet e seu pipeline associado serão interrompidos, e você receberá um erro. Considere os exemplos na tabela a seguir para entender como esses limites funcionam.

Exemplos de limites de dados de importação

Número de objetos Tamanho do objeto (MB) Tamanho total (MB) Resultado da operação

10

40

400

A operação é bem sucedida porque nem o tamanho dos objetos individuais excede 75 MB, nem o volume total de dados passados para o cmdlet excede 500 MB.

5

80

400

A operação falha porque, embora o volume total dos dados passados para o cmdlet seja de apenas 400 MB, o tamanho de cada objeto individual ultrapassa o limite de 75 MB.

120

5

600

A operação falha porque, embora cada objeto individual tenha apenas 5 MB, o volume total dos dados passados para o cmdlet ultrapassa o limite de 500 MB.

Devido aos limites de tamanho que foram colocados no volume de dados que pode ser transferido entre um servidor remoto do Exchange 2010 e um computador local, nem todos os cmdlets que antes suportavam a importação suportam este método de transferência de dados. Para determinar se um cmdlet específico aceita este método, consulte as informações da Ajuda para o cmdlet.

Esses limites devem acomodar a maioria das operações típicas que podem ser executadas em um servidor do Exchange 2010. Se os limites forem diminuídos, você pode achar que algumas operações normais falham porque excedem os novos limites. Se forem aumentados, a transferência pode levar mais tempo para ser executada e se expõe mais ao risco de condições transitórias que interrompem a transferência dos dados. Além disso, você pode esgotar a memória no servidor remoto se não tiver instalado memória suficiente para permitir que os servidor armazene todo o bloco de dados durante a transferência. Cada possibilidade pode resultar em perda de dados e, portanto, é recomendável que os limites padrão não sejam alterados.

Exportar Arquivos no Shell Remoto

A sintaxe para exportar arquivos no Exchange 2010 é usada sempre que você desejar aceitar dados de um cmdlet executado em um servidor remoto do Exchange 2010 e armazená-los em seu computador ou servidor local. Cmdlets que fornecem dados que podem ser salvos em um arquivo local terão como saída um objeto que contém a propriedade FileData (ou algo parecido). Dependendo do cmdlet, a propriedade FileData só é povoada no objeto de saída em situações específicas. Para determinar a propriedade correta e quando pode ser usada, consulte as informações da Ajuda para o cmdlet que está utilizando.

O Shell deve saber que você deseja salvar os dados armazenados na propriedade FileData em seu computador local. Para isso, use a sintaxe a seguir.

<cmdlet> | ForEach { $_.FileData | Add-Content <local path to file> -Encoding Byte }

Por exemplo, o comando a seguir exporta os dados armazenados na propriedade FileData no objeto criado pelo cmdlet fictício Export-SomeData. Os dados exportados são armazenados em um arquivo especificado por você no computador local, neste caso, MyData.dat.

Dica

Este procedimento usa o cmdlet ForEach, objetos e pipelining. Para obter mais informações sobre cada um, consulte:
Pipelining
Dados Estruturados

Export-SomeData | ForEach { $_.FileData | Add-Content C:\MyData.dat -Encoding Byte }

Quando o comando é executado, ocorrem as seguintes ações:

  1. O comando é aceito pelo Shell remoto.
  2. O Shell remoto chama o cmdlet Export-SomeData no servidor remoto do Exchange 2010.
  3. O objeto de saída criado pelo cmdlet Export-SomeData é passado de volta para a sessão local do Shell, através do pipeline.
  4. O objeto de saída é canalizado para o cmdlet ForEach, que tem um bloco de script.
  5. Dentro do bloco de script, a propriedade FileData no objeto atual no pipeline é acessada. Os dados contidos dentro da propriedade FileData são canalizados para o cmdlet Add-Content.
  6. O cmdlet Add-Content salva os dados canalizados da propriedade FileData no arquivo MyData.dat, no sistema local de arquivos.

Para obter informações específicas sobre como exportar dados do Exchange 2010, consulte os tópicos da Ajuda para o recurso que está gerenciando.

Importando e Exportando Arquivos em Servidores de Transporte de Borda

A função de servidor Transporte de Borda não usa o Shell remoto como as outras funções de servidor do Exchange 2010. Ela usa o Shell local. Isso acontece porque o Shell remoto exige o Active Directory e o Controle de Acesso Baseado em Função (RBAC) para funcionar. A função de servidor Transporte de Borda usa o Active Directory Lightweight Directory Services (AD LDS).

Como a função de servidor Transporte de Borda não usa o Shell remoto, o novo processo para importar e exportar arquivos não se aplica. Cmdlets executados na função de servidor Transporte de Borda podem aceitar arquivos diretamente, sem nenhuma sintaxe adicional. Para encontrar a sintaxe necessária para importar e exportar arquivos em servidores de Transporte de Borda, consulte as informações de Ajuda para o cmdlet que está utilizando.