Export-PSSession
Exporta comandos de outra sessão e os salva em um módulo do PowerShell.
Syntax
Export-PSSession
[-Session] <PSSession>
[-OutputModule] <string>
[[-CommandName] <string[]>]
[[-FormatTypeName] <string[]>]
[-Force]
[-Encoding <string>]
[-AllowClobber]
[-ArgumentList <Object[]>]
[-CommandType <CommandTypes>]
[-Module <string[]>]
[-FullyQualifiedModule <ModuleSpecification[]>]
[-Certificate <X509Certificate2>]
[<CommonParameters>]
Description
O Export-PSSession
cmdlet obtém cmdlets, funções, aliases e outros tipos de comando de outra sessão do PowerShell (PSSession) em um computador local ou remoto e os salva em um módulo do PowerShell. Para adicionar os comandos do módulo à sessão atual, use o Import-Module
cmdlet .
Ao contrário Import-PSSession
de , que importa comandos de outro PSSession para a sessão atual, Export-PSSession
salva os comandos em um módulo. Os comandos não são importados para a sessão atual.
Para exportar comandos, use o New-PSSession
cmdlet para criar uma PSSession que tenha os comandos que você deseja exportar. Em seguida, use o Export-PSSession
cmdlet para exportar os comandos.
Para evitar conflitos de nome de comando, o padrão para Export-PSSession
é exportar todos os comandos, exceto os comandos que existem na sessão atual. Você pode usar o parâmetro CommandName para especificar os comandos a serem exportados.
O Export-PSSession
cmdlet usa o recurso de comunicação remota implícita do 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.
Exemplos
Exemplo 1: Exportar comandos de uma PSSession
Este exemplo cria uma nova PSSession do computador local para o computador Server01. Todos os comandos, exceto aqueles que existem na sessão atual, são exportados para o módulo chamado Server01 no computador local. A exportação inclui os dados de formatação para os comandos.
$S = New-PSSession -ComputerName Server01
Export-PSSession -Session $S -OutputModule Server01
O New-PSSession
comando cria uma PSSession no computador Server01. A PSSession é armazenada na $S
variável . O Export-PSSession
comando exporta os $S
comandos da variável e a formatação de dados para o módulo Server01.
Exemplo 2: exportar os comandos Get e Set
Este exemplo exporta todos os Get
comandos e Set
de um servidor.
$S = New-PSSession -ConnectionUri http://exchange.microsoft.com/mailbox -Credential exchangeadmin01@hotmail.com -Authentication Negotiate
Export-PSSession -Session $R -Module exch* -CommandName Get-*, Set-* -FormatTypeName * -OutputModule $pshome\Modules\Exchange -Encoding ASCII
Esses comandos exportam os Get
comandos e Set
de um snap-in Microsoft Exchange Server em um computador remoto para um módulo do $pshome
Exchange no diretório \Modules no computador local.
Colocar o módulo no $pshome
diretório \Modules o torna acessível a todos os usuários do computador.
Exemplo 3: exportar comandos de um computador remoto
Este exemplo exporta cmdlets de uma PSSession em um computador remoto e os salva em um módulo no computador local. Os cmdlets do módulo são adicionados à sessão atual para que possam ser usados.
$S = New-PSSession -ComputerName Server01 -Credential Server01\User01
Export-PSSession -Session $S -OutputModule TestCmdlets -Type Cmdlet -CommandName *test* -FormatTypeName *
Remove-PSSession $S
Import-Module TestCmdlets
Get-Help Test*
Test-Files
O New-PSSession
comando cria uma PSSession no computador Server01 e o salva na $S
variável . O Export-PSSession
comando exporta os cmdlets cujos nomes começam com Test do PSSession no $S
para o módulo TestCmdlets no computador local.
O Remove-PSSession
cmdlet exclui a PSSession na $S
sessão atual. Esse comando mostra que a PSSession não precisa estar ativa para usar os comandos que foram importados da sessão. O Import-Module
cmdlet adiciona os cmdlets no módulo TestCmdlets à sessão atual. O comando pode ser executado em qualquer sessão a qualquer momento.
O Get-Help
cmdlet obtém ajuda para cmdlets cujos nomes começam com Test. Depois que os comandos em um módulo forem adicionados à sessão atual, você poderá usar os Get-Help
cmdlets e Get-Command
para saber mais sobre os comandos importados. O Test-Files
cmdlet foi exportado do computador Server01 e adicionado à sessão. O Test-Files
cmdlet é executado em uma sessão remota no computador do qual o comando foi importado. O PowerShell cria uma sessão com base nas informações armazenadas no módulo TestCmdlets.
Exemplo 4: Exportar e clobber comandos na sessão atual
Este exemplo exporta comandos armazenados em uma variável para a sessão atual.
Export-PSSession -Session $S -AllowClobber -OutputModule AllCommands
Esse Export-PSSession
comando exporta todos os comandos e todos os dados de formatação da PSSession na $S
variável para a sessão atual. O parâmetro AllowClobber inclui comandos com os mesmos nomes que os comandos na sessão atual.
Exemplo 5: Exportar comandos de uma PSSession fechada
Este exemplo mostra como executar os comandos exportados com opções especiais quando a PSSession que criou os comandos exportados for fechada.
Se a sessão remota original for fechada quando um módulo for importado, o módulo usará qualquer sessão remota aberta que se conecte ao computador de origem. Se não houver nenhuma sessão atual no computador de origem, o módulo restabelecerá uma sessão.
Para executar comandos exportados com opções especiais em uma sessão remota, você deve criar uma sessão remota com essas opções antes de importar o módulo. Usar o New-PSSession
cmdlet com o parâmetro SessionOption
$Options = New-PSSessionOption -NoMachineProfile
$S = New-PSSession -ComputerName Server01 -SessionOption $Options
Export-PSSession -Session $S -OutputModule Server01
Remove-PSSession $S
New-PSSession -ComputerName Server01 -SessionOption $Options
Import-Module Server01
O New-PSSessionOption
cmdlet cria um objeto PSSessionOption e salva o objeto na $Options
variável . O New-PSSession
comando cria uma PSSession no computador Server01.
O parâmetro SessionOption usa o objeto armazenado em $Options
. A sessão é armazenada na $S
variável .
O Export-PSSession
cmdlet exporta comandos do PSSession no $S
para o módulo Server01.
O Remove-PSSession
cmdlet exclui a PSSession na $S
variável .
O New-PSSession
cmdlet cria uma nova PSSession que se conecta ao computador Server01. O parâmetro SessionOption usa o objeto armazenado em $Options
. O Import-Module
cmdlet importa os comandos do módulo Server01. Os comandos no módulo são executados no PSSession no computador Server01.
Parâmetros
-AllowClobber
Exporta os comandos especificados, mesmo se tiverem os mesmos nomes de comandos na sessão atual.
Se você exportar um comando com o mesmo nome de um comando na sessão atual, o comando exportado oculta ou substitui os comandos originais. Para obter mais informações, confira about_Command_Precedence.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ArgumentList
Exporta a variante do comando resultante ao usar os argumentos especificados (valores de parâmetro).
Por exemplo, para exportar a variante do Get-Item
comando na unidade certificado (Cert:) na PSSession em $S
, digite export-pssession -session $S -command get-item -argumentlist cert:
.
Type: | Object[] |
Aliases: | Args |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Certificate
Especifica o certificado do cliente usado para assinar os arquivos de formato (*. Format.ps1xml) ou arquivos de módulo de script (.psm1) no módulo que Export-PSSession
cria. Insira uma variável que contém um certificado, comando ou expressão que obtém os objetos.
Para localizar um certificado, use o Get-PfxCertificate
cmdlet ou use o Get-ChildItem
cmdlet na unidade Certificado (Cert:). Se o certificado não for válido ou não tiver autoridade suficiente, o comando falhará.
Type: | X509Certificate2 |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-CommandName
Exporta somente os comandos com os nomes especificados ou padrões de nome. Caracteres curinga são permitidos. Use CommandName ou seu alias, Name.
Por padrão, Export-PSSession
exporta todos os comandos da PSSession, exceto os comandos que têm os mesmos nomes que os comandos na sessão atual. Isso impede que os comandos sejam ocultos ou substituídos por comandos na sessão atual. Para exportar todos os comandos, mesmo aqueles que ocultam ou substituem outros comandos, use o parâmetro AllowClobber .
Se você usar o parâmetro CommandName , os arquivos de formatação para os comandos não serão exportados, a menos que você use o parâmetro FormatTypeName . Da mesma forma, se você usar o parâmetro FormatTypeName , nenhum comando será exportado, a menos que você use o parâmetro CommandName .
Type: | String[] |
Aliases: | Name |
Position: | 2 |
Default value: | All commands in the session. |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-CommandType
Exporta somente os tipos especificados de objetos de comando. Use o CommandType ou seu alias, Type.
Os valores aceitáveis para esse parâmetro são os seguintes:
- Alias. Todos os aliases do PowerShell na sessão atual.
- Todos. Todos os tipos de comando. É o equivalente a
Get-Command -Name *
. - Console. Todos os arquivos que não sejam arquivos do PowerShell em caminhos listados na variável de ambiente Path (
$env:path
), incluindo arquivos de .txt, .exe e .dll. - Cmdlet. Os cmdlets na sessão atual. Cmdlet é o padrão.
- Configuração. Uma configuração do PowerShell. Para obter mais informações, consulte about_Session_Configurations.
- ExternalScript. Todos os arquivos .ps1 nos caminhos listados na variável de ambiente Path (
$env:path
). - Filtrar e Função. Todas as funções do PowerShell.
- Script. Blocos de script na sessão atual.
- Fluxo de trabalho. Um fluxo de trabalho do PowerShell. Para obter mais informações, consulte about_Workflows.
Type: | CommandTypes |
Aliases: | Type |
Accepted values: | Alias, All, Application, Cmdlet, Configuration, ExternalScript, Filter, Function, Script, Workflow |
Position: | Named |
Default value: | All commands in the session. |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Encoding
Especifica o tipo de codificação para o arquivo de destino. O valor padrão é UTF8.
Os valores aceitáveis para esse parâmetro são os seguintes:
- ASCII Usa conjunto de caracteres ASCII (7 bits).
- Bigendianunicode Usa UTF-16 com a ordem de bytes big-endian.
- Padrão Usa a codificação que corresponde à página de código ativa do sistema.
- OEM Usa a codificação que corresponde à página de código OEM atual do sistema.
- Unicode Usa UTF-16 com a ordem de bytes little-endian.
- UTF7 Usa UTF-7.
- UTF8 Usa UTF-8.
- UTF32 Usa UTF-32 com a ordem de bytes little-endian.
Type: | String |
Accepted values: | ASCII, BigEndianUnicode, Default, OEM, Unicode, UTF7, UTF8, UTF32 |
Position: | Named |
Default value: | UTF8 |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Force
Substitui um ou mais arquivos de saída existentes, mesmo se o arquivo tem o atributo somente leitura.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-FormatTypeName
Exporta instruções de formatação para os tipos especificados do Microsoft .NET Framework. Insira os nomes de tipo. Por padrão, Export-PSSession
exporta instruções de formatação para todos os tipos de .NET Framework que não estão no namespace System.Management.Automation.
O valor desse parâmetro deve ser o nome de um tipo retornado por um Get-FormatData
comando 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 .
Se você usar o parâmetro CommandName , os arquivos de formatação para os comandos não serão exportados, a menos que você use o parâmetro FormatTypeName .
Type: | String[] |
Position: | 3 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-FullyQualifiedModule
Especifica módulos com nomes especificados na forma de objetos ModuleSpecification . Consulte a seção Comentários do Construtor ModuleSpecification (Tabela de Hash).
Por exemplo, o parâmetro FullyQualifiedModule aceita um nome de módulo especificado em qualquer um destes formatos:
@{ModuleName = "modulename"; ModuleVersion = "version_number"}
@{ModuleName = "modulename"; ModuleVersion = "version_number"; Guid = "GUID"}
ModuleName e ModuleVersion são obrigatórios, mas Guid é opcional. Não é possível especificar o parâmetro FullyQualifiedModule no mesmo comando que um parâmetro Module ; os dois parâmetros são mutuamente exclusivos.
Type: | ModuleSpecification[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Module
Exporta apenas os comandos nos snap-ins e módulos do PowerShell especificados. Digite os nomes de módulos e snap-ins. Caracteres curinga não são permitidos.
Para obter mais informações, consulte Import-Module
e about_PSSnapins.
Type: | String[] |
Aliases: | PSSnapin |
Position: | Named |
Default value: | All commands in the session. |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-OutputModule
Especifica um caminho e um nome opcionais para o módulo criado por Export-PSSession
. O caminho padrão é $home\Documents\WindowsPowerShell\Modules
. Este parâmetro é necessário.
Se o subdiretório do módulo ou qualquer um dos arquivos que Export-PSSession
cria já existirem, o comando falhará. Para substituir arquivos existentes, use o parâmetro Force .
Type: | String |
Aliases: | PSPath, ModuleName |
Position: | 1 |
Default value: | $home\Documents\WindowsPowerShell\Modules |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Session
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 obtém um objeto de sessão, como um Get-PSSession
comando. Este parâmetro é necessário.
Type: | PSSession |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Entradas
None
Não é possível canalizar objetos para Export-PSSession
.
Saídas
Export-PSSession
retorna uma lista de arquivos que compõem o módulo que ele criou.
Observações
Export-PSSession
depende da infraestrutura de comunicação remota do PowerShell. Para usar esse cmdlet, o computador deve ser 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 PowerShell.
Os comandos exportados são executados implicitamente na PSSession da qual foram exportados. Os detalhes da execução remota dos comandos são tratados inteiramente pelo PowerShell. Você pode executar os comandos exportados exatamente como você executaria comandos locais.
Export-ModuleMember
captura e salva informações sobre o PSSession no módulo que ele exporta. Se o PSSession do qual os comandos foram exportados for fechado quando você importar o módulo e não houver PSSessions ativos para o mesmo computador, os comandos no módulo tentarão recriar a PSSession. Se as tentativas de recriar a PSSession falharem, os comandos exportados não serão executados.
As informações de sessão que Export-ModuleMember
capturam e salvam no módulo não incluem opções de sessão, como as especificadas na $PSSessionOption
variável de preferência ou usando o parâmetro SessionOption dos New-PSSession
cmdlets , Enter-PSSession
ou Invoke-Command
. Se a PSSession original for fechada quando você importar o módulo, o módulo usará outra PSSession no mesmo computador, se disponível. Para habilitar os comandos importados para serem executados em uma sessão configurada corretamente, crie uma PSSession com as opções que você deseja antes de importar o módulo.
Para localizar os comandos a serem exportados, Export-PSSession
usa o Invoke-Command
cmdlet para executar um Get-Command
comando no PSSession. Para obter e salvar dados de formatação para os comandos, ele usa os Get-FormatData
cmdlets e Export-FormatData
. Você pode ver mensagens de erro de Invoke-Command
, Get-Command
, Get-FormatData
e Export-FormatData
ao executar um Export-PSSession
comando. Além disso, Export-PSSession
não é possível exportar comandos de uma sessão que não inclua os Get-Command
cmdlets , Get-FormatData
, Select-Object
e Get-Help
.
Export-PSSession
usa o Write-Progress
cmdlet para exibir o progresso do comando. Você pode ver a barra de progresso enquanto o comando é executado.
Comandos exportados têm as mesmas limitações que 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 PowerShell não são executados em PSSessions, os comandos que um perfil adiciona a uma sessão não estão disponíveis para Export-PSSession
. Para exportar comandos de um perfil, use um Invoke-Command
comando para executar o perfil na PSSession manualmente antes de exportar comandos.
O módulo que Export-PSSession
cria pode incluir um arquivo de formatação, mesmo que o comando não importe dados de formatação. Se o comando não importar dados de formatação, quaisquer arquivos de formatação criados não conterão dados de formatação.