Export-PSSession
Exporta comandos de outra sessão e os salva em um módulo do PowerShell.
Sintaxe
All
Export-PSSession
[-OutputModule] <String>
[[-CommandName] <String[]>]
[[-FormatTypeName] <String[]>]
[-Session] <PSSession>
[-Force]
[-Encoding <Encoding>]
[-AllowClobber]
[-ArgumentList <Object[]>]
[-CommandType <CommandTypes>]
[-Module <String[]>]
[-FullyQualifiedModule <ModuleSpecification[]>]
[-Certificate <X509Certificate2>]
[<CommonParameters>]
Description
O cmdlet Export-PSSession 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 cmdlet Import-Module.
Ao contrário do Import-PSSession, 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 cmdlet New-PSSession para criar um PSSession que tenha os comandos que você deseja exportar. Em seguida, use o cmdlet Export-PSSession 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 cmdlet Export-PSSession 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 comando New-PSSession cria uma PSSession no computador Server01. A PSSession é armazenada na variável $S. O comando Export-PSSession exporta os comandos e dados de formatação da variável $S para o módulo Server01.
Exemplo 2: Exportar os comandos Get e set
Este exemplo exporta todos os comandos Get e Set de um servidor.
$newSession = @{
ConnectionUri = 'https://exchange.microsoft.com/mailbox'
Credential = 'exchangeadmin01@hotmail.com'
Authentication = 'Negotiate'
}
$S = New-PSSession @newSession
$exportSession = @{
Session = $S
Module = 'exch*'
CommandName = 'Get-*', 'Set-*'
FormatTypeName = '*'
OutputModule = "$PSHOME\Modules\Exchange"
Encoding = 'ascii'
}
Export-PSSession @exportSession
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\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.
$newSession = @{
ComputerName = 'Server01'
Credential = 'Server01\User01'
}
$S = New-PSSession @newSession
$exportSession = @{
Session = $S
OutputModule = 'TestCmdlets'
Type = 'Cmdlet'
CommandName = '*test*'
FormatTypeName = '*'
}
Export-PSSession @exportSession
Remove-PSSession $S
Import-Module TestCmdlets
Get-Help Test*
Test-Files
O comando New-PSSession cria uma PSSession no computador Server01 e a salva na variável $S. O comando Export-PSSession exporta os cmdlets cujos nomes começam com Test do PSSession no $S para o módulo TestCmdlets no computador local.
O cmdlet Remove-PSSession exclui o PSSession em $S da sessão atual. Este comando mostra que o PSSession não precisa estar ativo para usar os comandos que foram importados da sessão. O cmdlet Import-Module adiciona os cmdlets no módulo TestCmdlets à sessão atual. O comando pode ser executado em qualquer sessão a qualquer momento.
O cmdlet Get-Help 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 cmdlets Get-Help e Get-Command para aprender sobre os comandos importados. O cmdlet Test-Files foi exportado do computador Server01 e adicionado à sessão. O cmdlet Test-Files é executado em uma sessão remota no computador do qual o comando foi importado. O PowerShell cria uma sessão a partir de informações armazenadas no módulo TestCmdlets.
Exemplo 4: Comandos de exportação e clobber 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
Este comando Export-PSSession exporta todos os comandos e todos os dados de formatação da PSSession na variável $S 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 é 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 para o 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. Use o cmdlet New-PSSession 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 cmdlet New-PSSessionOption cria um objeto PSSessionOption e salva o objeto na variável $Options. O comando New-PSSession cria uma PSSession no computador Server01.
O parâmetro SessionOption usa o objeto armazenado em $Options. A sessão é armazenada na variável $S.
O cmdlet Export-PSSession exporta comandos do PSSession no $S para o módulo Server01.
O cmdlet Remove-PSSession exclui o PSSession na variável $S.
O cmdlet New-PSSession cria uma nova PSSession que se conecta ao computador Server01. O parâmetro SessionOption usa o objeto armazenado em $Options. O cmdlet Import-Module 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 que eles tenham os mesmos nomes que os comandos na sessão atual.
Se você exportar um comando com o mesmo nome de um comando na sessão atual, o comando exportado ocultará ou substituirá os comandos originais. Para obter mais informações, consulte about_Command_Precedence.
Propriedades dos parâmetros
| Tipo: | SwitchParameter |
| Default value: | None |
| Suporta carateres universais: | False |
| NãoMostrar: | False |
Conjuntos de parâmetros
(All)
| Position: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline por nome de propriedade: | False |
| Valor dos restantes argumentos: | False |
-ArgumentList
Exporta a variante do comando que resulta do uso dos argumentos especificados (valores de parâmetro).
Por exemplo, para exportar a variante do comando Get-Item na unidade de certificado (Cert:) no PSSession no $S, digite Export-PSSession -Session $S -Command Get-Item -ArgumentList Cert:.
Propriedades dos parâmetros
| Tipo: | Object[] |
| Default value: | None |
| Suporta carateres universais: | False |
| NãoMostrar: | False |
| Aliases: | Argumentos |
Conjuntos de parâmetros
(All)
| Position: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline por nome de propriedade: | False |
| Valor dos restantes argumentos: | False |
-Certificate
Especifica o certificado de 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 contenha um certificado ou um comando ou expressão que obtenha o certificado.
Para localizar um certificado, use o cmdlet Get-PfxCertificate ou use o cmdlet Get-ChildItem na unidade Certificate (Cert:). Se o certificado não for válido ou não tiver autoridade suficiente, o comando falhará.
Propriedades dos parâmetros
| Tipo: | X509Certificate2 |
| Default value: | None |
| Suporta carateres universais: | False |
| NãoMostrar: | False |
Conjuntos de parâmetros
(All)
| Position: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline por nome de propriedade: | False |
| Valor dos restantes argumentos: | False |
-CommandName
Exporta apenas os comandos com os nomes ou padrões de nome especificados. Curingas são permitidos. Use CommandName ou seu alias, Name.
Por padrão, Export-PSSession exporta todos os comandos do 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.
Propriedades dos parâmetros
| Tipo: | String[] |
| Default value: | All commands in the session. |
| Suporta carateres universais: | True |
| NãoMostrar: | False |
| Aliases: | Nome |
Conjuntos de parâmetros
(All)
| Position: | 2 |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline por nome de propriedade: | False |
| Valor dos restantes argumentos: | False |
-CommandType
Exporta apenas os tipos especificados de objetos de comando. Use CommandType ou seu alias, Type.
Os valores aceitáveis para este parâmetro são os seguintes:
-
Alias: Todos os aliases do PowerShell na sessão atual. -
All: Todos os tipos de comando. É o equivalente aGet-Command -Name *. -
Application: Todos os arquivos que não sejam do PowerShell em caminhos listados na variável de ambiente PATH ($Env:PATH), incluindo arquivos .txt, .exee .dll. -
Cmdlet: Os cmdlets na sessão atual. Cmdlet é o padrão. -
Configuration: Uma configuração do PowerShell. Para obter mais informações, consulte about_Session_Configurations. -
ExternalScript: Todos os arquivos.ps1nos caminhos listados na variável de ambiente PATH ($Env:PATH). -
FiltereFunction: Todas as funções do PowerShell. -
ScriptBlocos de script na sessão atual. -
WorkflowUm fluxo de trabalho do PowerShell. Para obter mais informações, consulte about_Workflows.
Esses valores são definidos como uma enumeração baseada em sinalizador. Você pode combinar vários valores juntos para definir vários sinalizadores usando esse parâmetro. Os valores podem ser passados para o parâmetro CommandType como uma matriz de valores ou como uma cadeia de caracteres separada por vírgulas desses valores. O cmdlet combinará os valores usando uma operação binary-OR. Passar valores como uma matriz é a opção mais simples e também permite que você use o preenchimento de tabulação nos valores.
Propriedades dos parâmetros
| Tipo: | CommandTypes |
| Default value: | All commands in the session. |
| Valores aceites: | Alias, All, Application, Cmdlet, Configuration, ExternalScript, Filter, Function, Script, Workflow |
| Suporta carateres universais: | False |
| NãoMostrar: | False |
| Aliases: | Tipo |
Conjuntos de parâmetros
(All)
| Position: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline por nome de propriedade: | False |
| Valor dos restantes argumentos: | False |
-Encoding
Especifica o tipo de codificação para o arquivo de destino. O valor predefinido é utf8NoBOM.
Os valores aceitáveis para este parâmetro são os seguintes:
-
ascii: Usa a codificação para o conjunto de caracteres ASCII (7 bits). -
ansi: Usa a codificação para a página de código ANSI da cultura atual. Essa opção foi adicionada no PowerShell 7.4. -
bigendianunicode: Codifica no formato UTF-16 usando a ordem de bytes big-endian. -
bigendianutf32: Codifica no formato UTF-32 utilizando a ordem de bytes big-endian. -
oem: Utiliza a codificação predefinida para MS-DOS e programas de consola. -
unicode: Codifica em formato UTF-16 utilizando a ordem de bytes little-endian. -
utf7: Codifica em formato UTF-7. -
utf8: Codifica em formato UTF-8. -
utf8BOM: Codifica no formato UTF-8 com Byte Order Mark (BOM) -
utf8NoBOM: Codifica no formato UTF-8 sem Byte Order Mark (BOM) -
utf32: Codifica no formato UTF-32.
A partir do PowerShell 6.2, o parâmetro Encoding também permite IDs numéricos de páginas de código registradas (como -Encoding 1251) ou nomes de cadeia de caracteres de páginas de código registradas (como -Encoding "windows-1251"). Para obter mais informações, consulte a documentação do .NET para Encoding.CodePage.
A partir do PowerShell 7.4, você pode usar o valor Ansi para o parâmetro Encoding para passar a ID numérica para a página de código ANSI da cultura atual sem precisar especificá-la manualmente.
Observação
UTF-7* não é mais recomendado para usar. A partir do PowerShell 7.1, um aviso será escrito se você especificar utf7 para o parâmetro Encoding.
Propriedades dos parâmetros
| Tipo: | Encoding |
| Default value: | UTF8NoBOM |
| Valores aceites: | ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 |
| Suporta carateres universais: | False |
| NãoMostrar: | False |
Conjuntos de parâmetros
(All)
| Position: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline por nome de propriedade: | False |
| Valor dos restantes argumentos: | False |
-Force
Substitui um ou mais arquivos de saída existentes, mesmo que o arquivo tenha o atributo somente leitura.
Propriedades dos parâmetros
| Tipo: | SwitchParameter |
| Default value: | None |
| Suporta carateres universais: | False |
| NãoMostrar: | False |
Conjuntos de parâmetros
(All)
| Position: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline por nome de propriedade: | False |
| Valor dos restantes argumentos: | False |
-FormatTypeName
Exporta instruções de formatação somente para os tipos especificados do Microsoft .NET Framework. Insira os nomes dos tipos. Por padrão, o Export-PSSession exporta instruções de formatação para todos os tipos do .NET Framework que não estão no namespace System.Management.Automation do.
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.
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.
Propriedades dos parâmetros
| Tipo: | String[] |
| Default value: | None |
| Suporta carateres universais: | False |
| NãoMostrar: | False |
Conjuntos de parâmetros
(All)
| Position: | 3 |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline por nome de propriedade: | False |
| Valor dos restantes argumentos: | False |
-FullyQualifiedModule
O valor pode ser um nome de módulo, uma especificação de módulo completo ou um caminho para um arquivo de módulo.
Quando o valor é um caminho, o caminho pode ser totalmente qualificado ou relativo. Um caminho relativo é resolvido em relação ao script que contém a instrução using.
Quando o valor é um nome ou especificação de módulo, o PowerShell procura o módulo especificado PSModulePath.
Uma especificação de módulo é uma hashtable que tem as seguintes chaves.
-
ModuleName- Obrigatório Especifica o nome do módulo. -
GUID- Opcional Especifica o GUID do módulo. - Também é Obrigatório especificar pelo menos uma das três chaves abaixo.
-
ModuleVersion- Especifica uma versão mínima aceitável do módulo. -
MaximumVersion- Especifica a versão máxima aceitável do módulo. -
RequiredVersion- Especifica uma versão exata e necessária do módulo. Isso não pode ser usado com as outras chaves de versão.
-
Não é possível especificar o parâmetro FullyQualifiedModule no mesmo comando que um parâmetro Module. os dois parâmetros excluem-se mutuamente.
Propriedades dos parâmetros
| Tipo: | |
| Default value: | None |
| Suporta carateres universais: | False |
| NãoMostrar: | False |
Conjuntos de parâmetros
(All)
| Position: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline por nome de propriedade: | False |
| Valor dos restantes argumentos: | False |
-Module
Exporta apenas os comandos nos snap-ins e módulos especificados do PowerShell. Insira os nomes do snap-in e do módulo. Curingas não são permitidos.
Para obter mais informações, consulte Import-Module e about_PSSnapins.
Propriedades dos parâmetros
| Tipo: | String[] |
| Default value: | All commands in the session. |
| Suporta carateres universais: | False |
| NãoMostrar: | False |
| Aliases: | PSSnapin |
Conjuntos de parâmetros
(All)
| Position: | Named |
| Obrigatório: | False |
| Valor do pipeline: | False |
| Valor do pipeline por nome de propriedade: | False |
| Valor dos restantes argumentos: | 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 é obrigató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.
Propriedades dos parâmetros
| Tipo: | String |
| Default value: | $HOME\Documents\WindowsPowerShell\Modules |
| Suporta carateres universais: | False |
| NãoMostrar: | False |
| Aliases: | PSPath, Nome do módulo |
Conjuntos de parâmetros
(All)
| Position: | 1 |
| Obrigatório: | True |
| Valor do pipeline: | False |
| Valor do pipeline por nome de propriedade: | False |
| Valor dos restantes argumentos: | 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 obtenha um objeto de sessão, como um comando Get-PSSession. Este parâmetro é obrigatório.
Propriedades dos parâmetros
| Tipo: | PSSession |
| Default value: | None |
| Suporta carateres universais: | False |
| NãoMostrar: | False |
Conjuntos de parâmetros
(All)
| Position: | 0 |
| Obrigatório: | True |
| Valor do pipeline: | False |
| Valor do pipeline por nome de propriedade: | False |
| Valor dos restantes argumentos: | False |
CommonParameters
Este cmdlet suporta os parâmetros comuns: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction e -WarningVariable. Para obter mais informações, consulte about_CommonParameters.
Entradas
None
Não é possível canalizar objetos para este cmdlet.
Saídas
FileInfo
Este cmdlet retorna uma lista de arquivos que compõem o módulo que ele criou.
Notas
Export-PSSession depende da infraestrutura 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.
Não é possível 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 da mesma forma que executaria os comandos locais.
Export-ModuleMember captura e salva informações sobre o PSSession no módulo que 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 o PSSession. Se as tentativas de recriar o PSSession falharem, os comandos exportados não serão executados.
As informações de sessão que Export-ModuleMember captura e salva no módulo não incluem opções de sessão, como aquelas especificadas na variável de preferência $PSSessionOption ou usando o parâmetro SessionOption dos cmdlets New-PSSession, Enter-PSSessionou Invoke-Command. Se o PSSession original for fechado quando você importar o módulo, o módulo usará outro PSSession para o mesmo computador, se houver um 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, Export-PSSession usa o cmdlet Invoke-Command para executar um comando Get-Command no PSSession. Para obter e salvar dados de formatação para os comandos, ele usa os cmdlets Get-FormatData e Export-FormatData. Poderá ver mensagens de erro de Invoke-Command, Get-Command, Get-FormatDatae Export-FormatData quando executa um comando Export-PSSession. Além disso, Export-PSSession não pode exportar comandos de uma sessão que não inclua os cmdlets Get-Command, Get-FormatData, Select-Objecte Get-Help.
Export-PSSession usa o cmdlet Write-Progress para exibir o progresso do comando. Você pode ver a barra de progresso enquanto o comando está em execução.
Os comandos exportados têm as mesmas limitações que outros comandos remotos, incluindo 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 comando Invoke-Command para executar o perfil no 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, os arquivos de formatação criados não conterão dados de formatação.