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
do , 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 um 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 é Export-PSSession
exportar todos os comandos, exceto os comandos existentes 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 um PSSession
Este exemplo cria um novo PSSession do computador local para o computador Server01. Todos os comandos, exceto os 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 um PSSession no computador Server01. O PSSession é armazenado na $S
variável. O Export-PSSession
comando exporta os $S
comandos da variável e os dados de formatação 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 https://exchange.microsoft.com/mailbox -Credential exchangeadmin01@hotmail.com -Authentication Negotiate
Export-PSSession -Session $S -Module exch* -CommandName Get-*, Set-* -FormatTypeName * -OutputModule $PSHOME\Modules\Exchange -Encoding ASCII
Esses comandos exportam os Get
comandos e Set
de um snap-in do Microsoft Exchange Server em um computador remoto para um módulo do $PSHOME\Modules
Exchange no diretório no computador local.
Colocar o $PSHOME\Modules
módulo no diretório o torna acessível a todos os usuários do computador.
Exemplo 3: Exportar comandos de um computador remoto
Este exemplo exporta cmdlets de um 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 um 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 para $S
o módulo TestCmdlets no computador local.
O Remove-PSSession
cmdlet exclui o PSSession da $S
sessão atual. Esse comando mostra que o PSSession não precisa estar ativo 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 são adicionados à sessão atual, você pode usar os Get-Help
cmdlets e Get-Command
para aprender 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 a partir de informações armazenadas no módulo TestCmdlets.
Exemplo 4: Comandos Export 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
Esse Export-PSSession
comando exporta todos os comandos e todos os dados de formatação do 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 um PSSession fechado
Este exemplo mostra como executar os comandos exportados com opções especiais quando o PSSession que criou os comandos exportados é fechado.
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. 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 $Options
objeto na variável. O New-PSSession
comando cria um 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 para $S
o módulo Server01.
O Remove-PSSession
cmdlet exclui o PSSession na $S
variável.
O New-PSSession
cmdlet cria um novo 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 ocultará ou substituirá 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 Get-Item
variante do comando na unidade de certificado (Cert:) no 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 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 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 Certificate (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, exporta todos os comandos do PSSession, Export-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 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.All
: Todos os tipos de comando. É o equivalenteGet-Command -Name *
a .Application
: Todos os arquivos que não sejam arquivos do PowerShell em caminhos listados na variável de ambiente Path ($env:path
), incluindo arquivos .txt, .exe e .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 .ps1 nos caminhos listados na variável de ambiente Path ($env:path
).Filter
eFunction
: Todas as funções do PowerShell.Script
Blocos de script na sessão atual.Workflow
Um 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 a conclusão de tabulação nos valores.
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 o conjunto de caracteres ASCII (7 bits).BigEndianUnicode
: Usa UTF-16 com a ordem de bytes big-endian.Default
; Usa a codificação que corresponde à página de código ativo 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 do .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
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 no 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 é necessá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 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 pelo 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 criados Export-PSSession
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 obtenha um objeto de sessão, como um Get-PSSession
comando. Este parâmetro é obrigató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 esse cmdlet.
Saídas
Esse cmdlet retorna uma lista de arquivos que compõem o módulo que ele criou.
Observações
O Windows PowerShell inclui os seguintes aliases para Export-PSSession
:
epsn
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.
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 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
capturam e salvam no módulo não incluem opções de sessão, como aquelas 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
use 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 , , e Export-FormatData
quando você executa um Export-PSSession
Get-FormatData
comando. Get-Command
Invoke-Command
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
o . Para exportar comandos de um perfil, use um Invoke-Command
comando para executar o perfil no PSSession manualmente antes de exportar comandos.
O módulo que cria pode incluir um arquivo de formatação, mesmo que Export-PSSession
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.