Export-PSSession
Importa comandos de outra sessão e os salva em um módulo do Windows PowerShell.
Sintaxe
Export-PSSession [-Session] <PSSession> [-OutputModule] <string> [[-CommandName] <string[]>] [[-FormatTypeName] <string[]>] [-AllowClobber] [-ArgumentList <Object[]>] [-CommandType {<Alias> | <Function> | <Filter> | <Cmdlet> | <ExternalScript> | <Application> | <Script> | <All>}] [-Encoding <string>] [-Force] [-Module <string[]>] [<CommonParameters>]
Descrição
O cmdlet Export-PSSession obtém os cmdlets, as funções, os aliases e outros tipos de comando de outra PSSession em um computador local ou remoto e os salva em um módulo do Windows PowerShell. Para acrescentar os comandos do módulo à sessão atual, use o cmdlet Import-Module.
Diferentemente do Import-PSSession, que importa comandos de outra sessão PSSession para a sessão atual, o Export-PSSession salva os comandos em um módulo. Os comandos não são importados na sessão atual.
Para exportar comandos, primeiro use o cmdlet New-PSSession para criar uma PSSession que tem os comandos que você deseja exportar. Em seguida, use o cmdlet Export-PSSession para exportar os comandos. Por padrão, o Export-PSSession exporta todos os comandos, com exceção de comandos que existem na sessão atual, mas você pode usar os parâmetros CommandName para especificar os comandos a serem exportados.
O cmdlet Export-PSSession usa o recurso de comunicação remota implícito do Windows PowerShell. Quando você importa comandos para a sessão atual, eles são executados implicitamente na sessão original ou em uma sessão semelhante no computador de origem.
Parâmetros
-AllowClobber
Exporta os comandos especificados, até mesmo se eles tiverem os mesmos nomes que os comandos da sessão atual.
Se você importar um comando cujo nome seja igual ao de um comando da sessão atual, o comando importado ocultará ou substituirá os comandos originais. Para obter mais informações, consulte about_Command_Precedence.
Export-PSSession não importa comandos que tenham os mesmos nomes que os comandos da sessão atual. O comportamento padrão foi criado para impedir conflitos de nomes de comando.
Necessário? |
false |
Posição? |
named |
Valor padrão |
False |
Aceitar entrada do pipeline? |
false |
Aceitar caracteres curinga? |
false |
-ArgumentList <Object[]>
Exporta a variante do comando resultante do uso dos argumentos especificados (valores de parâmetros).
Por exemplo, para exportar a variante do comando Get-Item na unidade do certificado (Cert:) no PSSession em $s, digite "export-pssession -session $s -command Get-Item -argumentlist cert:".
Necessário? |
false |
Posição? |
named |
Valor padrão |
Nenhum |
Aceitar entrada do pipeline? |
false |
Aceitar caracteres curinga? |
false |
-CommandName <string[]>
Exporta apenas os comandos com os padrões de nome ou com os nomes especificados. Os caracteres curinga são permitidos. Use "CommandName" ou seu alias, "Name".
Por padrão, o Export-PSSession exporta todos os comandos da PSSession, exceto os comandos com nome idêntico ao de comandos da sessão atual. Isso impede que comandos importados ocultem ou substituam comandos na sessão atual. Para exportar todos os comandos, até mesmo os que ocultam ou substituem outros comandos, use o parâmetro AllowClobber.
Se você usar o parâmetro CommandName, não serão exportados os arquivos de formatação para os comandos a menos que você use o parâmetro FormatTypeName. De maneira semelhante, se você usar o parâmetro FormatTypeName, nenhum comando será exportado a menos que você use o parâmetro CommandName.
Necessário? |
false |
Posição? |
3 |
Valor padrão |
Todos os comandos da sessão. |
Aceitar entrada do pipeline? |
false |
Aceitar caracteres curinga? |
true |
-CommandType <CommandTypes>
Exporta apenas os tipos especificados de objetos de comando. Use "CommandType" ou seu alias, "Type".
Os valores válidos são:
-- Alias: todos os aliases do Windows PowerShell da sessão atual.
-- All: todos os tipos de comandos. Equivale a "Get-Command *".
-- Application: todos os arquivos que não sejam do Windows PowerShell nos caminhos listados na variável de ambiente Path ($env:path), incluindo arquivos .txt, .exe e .dll.
-- Cmdlet: cmdlets da sessão atual. "Cmdlet" é o padrão.
-- ExternalScript: todos os arquivos .ps1 nos caminhos listados na variável de ambiente Path ($env:path).
-- Filter e Function: todas as funções do Windows PowerShell.
-- Script: bloqueios de script na sessão atual.
Necessário? |
false |
Posição? |
named |
Valor padrão |
Todos os comandos da sessão. |
Aceitar entrada do pipeline? |
false |
Aceitar caracteres curinga? |
false |
-Encoding <string>
Especifica a codificação dos arquivos de saída. Os valores válidos são "Unicode", "UTF7", "UTF8", "ASCII", "UTF32", "BigEndianUnicode", "Default" e "OEM". O padrão é "UTF-8".
Necessário? |
false |
Posição? |
named |
Valor padrão |
UTF-8 |
Aceitar entrada do pipeline? |
false |
Aceitar caracteres curinga? |
false |
-Force
Substitui um ou mais arquivos existentes de saída, mesmo que o arquivo tenha o atributo somente leitura.
Necessário? |
false |
Posição? |
named |
Valor padrão |
False |
Aceitar entrada do pipeline? |
false |
Aceitar caracteres curinga? |
false |
-FormatTypeName <string[]>
Exporta instruções de formatação apenas para os tipos do Microsoft .NET Framework especificados. Insira os nomes de tipos. Por padrão, Export-PSSession exporta instruções de formatação para todos os tipos do .NET Framework que não estejam no namespace System.Management.Automation.
O valor desse parâmetro deve ser o nome de um tipo retornado por um comando Get-FormatData na sessão da qual os comandos estão sendo importados. Para obter todos os dados de formatação na sessão remota, digite *.
Se você usar o parâmetro FormatTypeName, nenhum comando será exportado a menos que você use o parâmetro CommandName.
De forma semelhante, se você usar o parâmetro CommandName, não serão exportados os arquivos de formatação para os comandos a menos que você use o parâmetro FormatTypeName.
Necessário? |
false |
Posição? |
4 |
Valor padrão |
|
Aceitar entrada do pipeline? |
false |
Aceitar caracteres curinga? |
false |
-Module <string[]>
Exporta apenas os comandos nos snap-ins e módulos do Windows PowerShell especificados. Insira os nomes de snap-ins e módulos. Os caracteres curinga não são permitidos.
Para obter mais informações, consulte about_Pssnapins e Import-Module.
Necessário? |
false |
Posição? |
named |
Valor padrão |
Todos os comandos da sessão. |
Aceitar entrada do pipeline? |
false |
Aceitar caracteres curinga? |
false |
-OutputModule <string>
Especifica um caminho (opcional) e um nome para o módulo que o Export-PSSession cria. O caminho padrão é $home\Documents\WindowsPowerShell\Modules. Esse parâmetro é obrigatório.
Se o subdiretório do módulo ou qualquer arquivo que Export-PSSession cria já existir, o comando falhará. Para substituir arquivos existentes, use o parâmetro Force.
Necessário? |
true |
Posição? |
2 |
Valor padrão |
|
Aceitar entrada do pipeline? |
false |
Aceitar caracteres curinga? |
false |
-Session <PSSession>
Especifica a PSSession da qual os comandos são exportados. Insira uma variável que contenha um objeto de sessão ou um comando que obtenha um objeto de sessão, como o comando Get-PSSession. Esse parâmetro é obrigatório.
Necessário? |
true |
Posição? |
1 |
Valor padrão |
Nenhum |
Aceitar entrada do pipeline? |
false |
Aceitar caracteres curinga? |
false |
<CommonParameters>
Esse cmdlet oferece suporte aos parâmetros comuns: -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer e -OutVariable. Para obter mais informações, consulte about_Commonparameters.
Entradas e saídas
O tipo de entrada é o tipo dos objetos que você pode canalizar para o cmdlet. O tipo de retorno é o tipo dos objetos que o cmdlet retorna.
Entradas |
Nenhum Não é possível canalizar objetos para Export-PSSession. |
Saídas |
System.IO.FileInfo Export-PSSession retorna uma lista de arquivos que incluem o módulo criado. |
Observações
Export-PSSession depende da infraestrutura remota do Windows PowerShell. Para usar esse cmdlet, o computador deve estar configurado para comunicação remota. Para obter mais informações, consulte about_Remote_Requirements.
Você não pode usar Export-PSSession para exportar um provedor do Windows PowerShell.
Os comandos exportados são executados implicitamente na PSSession da qual foram exportados. Porém, os detalhes da execução remota dos comandos são totalmente administrados pelo Windows PowerShell. Você pode executar os comandos exportados da mesma maneira que executaria comandos locais.
O Export-Module captura e salva informações sobre a PSSession no módulo que ele exporta. Se a PSSession da qual os comandos foram exportados estiver fechada quando você importar o módulo e se não houver PSSessions ativas no mesmo computador, os comandos do módulo tentarão recriar a PSSession. Se as tentativas de recriação da PSSession falharem, os comandos exportados não serão executados.
As informações da sessão que o Export-Module captura e salva no módulo não incluem opções de sessão, como aquelas que você especifica na variável automática $ PSSessionOption ou usando os parâmetros SessionOption do cmdlet New-PSSession, Enter-PSSession ou Invoke-Command. Se a PSSession original estiver fechada quando você importar o módulo, o módulo usará outra PSSession no mesmo computador, se houver uma disponível. Para permitir que os comandos importados sejam executados em uma sessão configurada corretamente, crie uma PSSession com as opções desejadas antes de importar o módulo.
Para localizar os comandos a serem exportados, o Export-PSSession usa o cmdlet Invoke-Command para executar um comando Get-Command na PSSession. A fim de obter e salvar os dados de formatação para os comandos, ele usa os cmdlets Get-FormatData e Export-FormatData. Talvez você receba mensagens de erro do Invoke-Command, Get-Command, Get-FormatData e Export-FormatData ao executar um comando Export-PSSession. Além disso, o Export-PSSession não pode exportar comandos de uma sessão que não inclua os cmdlets Get-Command, Get-FormatData, Select-Object e Get-Help.
Export-PSSession usa o cmdlet Write-Progress para exibir o andamento do comando. Você poderá ver a barra de andamento enquanto o comando estiver sendo executado.
Os comandos exportados têm as mesmas limitações de outros comandos remotos, inclusive a incapacidade de iniciar um programa com uma interface de usuário, como o Bloco de Notas.
Como os perfis do Windows PowerShell não são executados em PSSessions, os comandos que um perfil acrescenta a uma sessão não estão disponíveis para Export-PSSession. Para exportar comandos de um perfil, use um comando Invoke-Command para executar o perfil na PSSession manualmente antes de exportar comandos.
O módulo que Export-PSSession cria poderia incluir um arquivo de formatação, até mesmo se o comando não importar dados de formatação. Se o comando não importar dados de formatação, qualquer arquivo de formatação criado não conterá dados de formatação.
Exemplo 1
C:\PS>$s = new-pssession -computerName Server01
C:\PS> export-pssession -session $s -outputModule Server01
Descrição
-----------
Os comandos neste exemplo exportam todos os comandos de uma PSSession no computador Server01 para o módulo Server01 no computador local, com exceção dos comandos que têm o mesmo nome que os comandos da sessão atual. Ele também exporta os dados de formatação para os comandos.
O primeiro comando cria uma PSSession no computador Server01. O segundo comando exporta os comandos e dados de formatação da sessão no módulo Server01.
Exemplo 2
C:\PS>$s = new-pssession -ConnectionUri http://exchange.microsoft.com/mailbox -credential exchangeadmin01@hotmail.com -authentication negotiate
C:\PS> export-pssession -session $r -module exch* -commandname get-*, set-* -formattypename * -outputModule $pshome\Modules\Exchange -encoding ASCII
Descrição
-----------
Esses comandos exportam os comandos Get e Set de um snap-in do Microsoft Exchange Server em um computador remoto para um módulo do Exchange no diretório $pshome\Modules no computador local.
Colocar o módulo no diretório $pshome\Module torna-o acessível a todos os usuários do computador.
Exemplo 3
C:\PS>$s = new-pssession -computerName Server01 -credential Server01\User01
C:\PS> export-pssession -session $s -outputModule TestCmdlets -type cmdlet -commandname *test* -formattypename *
C:\PS> remove-pssession $s
C:\PS> import-module TestCmdlets
C:\PS> get-help test*
C:\PS> test-files
Descrição
-----------
Esses comandos exportam cmdlets de uma PSSession em um computador remoto e os salva em um módulo no computador local. Em seguida, os comandos acrescentam os cmdlets do módulo à sessão atual de modo que possam ser usados.
O primeiro comando cria uma PSSession no computador Server01 e salva-a na variável $s.
O segundo comando exporta os cmdlets cujos nomes começam com "Test" da PSSession em $s para o módulo TestCmdlets no computador local.
O terceiro comando usa o cmdlet Remove-PSSession para excluir a PSSession em $s da sessão atual. Esse comando mostra que a PSSession não precisa estar ativa para usar os comandos que foram importados dela.
O quarto comando, que pode ser executado em qualquer momento em qualquer sessão, usa o cmdlet Import-Module para acrescentar os cmdlets no módulo TestCmdlets à sessão atual.
O quinto comando usa o cmdlet Get-Help para obter ajuda sobre cmdlets cujos nomes começam com "Test." Depois que os comandos em um módulo são acrescentados à sessão atual, você pode usar os cmdlets Get-Help e Get-Command para conhecer os comandos importados, da mesma forma que você os usaria para qualquer outro comando na sessão.
O sexto comando usa o cmdlet Test-Files, que foi exportado do computador Server01 e acrescentado à sessão.
Embora não seja evidente, o comando Test-Files é executado em uma sessão remota no computador do qual ele foi importado. O Windows PowerShell cria uma sessão com base nas informações armazenadas no módulo.
Exemplo 4
C:\PS>export-pssession -session $s -AllowClobber -outputModule AllCommands
Descrição
-----------
Esse comando exporta todos os comandos e todos os dados de formatação da PSSession na variável $s para a sessão atual. O comando usa o parâmetro AllowClobber para incluir comandos com os mesmos nomes que os comandos da sessão atual.
Exemplo 5
C:\PS>$options = New-PSSessionOption -NoMachineProfile
C:\PS> $s = new-pssession -computername Server01 -sessionoption $options
C:\PS> export-pssession -session $s -outputModule Server01
C:\PS> remove-pssession $s
C:\PS> new-pssession -computername Server01 -sessionoption $options
C:\PS> import-module Server01
Descrição
-----------
Esse exemplo mostra como executar os comandos exportados em uma sessão com opções específicas quando a PSSession da qual os comandos foram exportados é fechada.
Quando você usa o Export-PSSession, ele salva informações sobre a PSSession original no módulo que ele cria. Quando você importa o módulo, se a sessão remota original estiver fechada, o módulo usará qualquer sessão remota aberta que se conectar ao computador de origem.
Se a sessão atual não incluir uma sessão remota ao computador de origem, os comandos no módulo restabelecerão uma sessão com aquele computador. Porém, Export-PSSession não salva opções especiais, como as definidas com o parâmetro SessionOption de New-PSSession, no módulo.
Portanto, se você desejar executar os comandos exportados em uma sessão remota com opções específicas, você precisará criar uma sessão remota com as opções desejadas antes de importar o módulo.
O primeiro comando usa o cmdlet New-PSSessionOption para criar um objeto PSSessionOption e salva o objeto na variável $options.
O segundo comando cria uma PSSession que inclui as opções especificadas. O comando usa o cmdlet New-PSSession para criar uma PSSession no computador Server01. Ele usa o parâmetro SessionOption para enviar o objeto de opção em $options.
O terceiro comando usa o cmdlet Export-PSSession para exportar comandos da PSSession em $s para o módulo Server01.
O quarto comando usa o cmdlet Remove-PSSession para excluir a PSSession na variável $s.
O quinto comando usa o cmdlet New-PSSession para criar uma nova PSSession que se conecta ao computador Server01. Essa PSSession também usa as opções de sessão na variável $options.
O sexto comando usa o cmdlet Import-Module para importar os comandos do módulo Server01. Os comandos no módulo são executados na PSSession do computador Server01.
Consulte também
Conceitos
about_Command_Precedence
Import-PSSession
New-PSSession
Import-Module
Invoke-Command
about_PSSessions