Export-PSSession
Exporta comandos desde otra sesión y los guarda en un módulo de PowerShell.
Syntax
Export-PSSession
[-OutputModule] <String>
[-Force]
[-Encoding <Encoding>]
[[-CommandName] <String[]>]
[-AllowClobber]
[-ArgumentList <Object[]>]
[-CommandType <CommandTypes>]
[-Module <String[]>]
[-FullyQualifiedModule <ModuleSpecification[]>]
[[-FormatTypeName] <String[]>]
[-Certificate <X509Certificate2>]
[-Session] <PSSession>
[<CommonParameters>]
Description
El Export-PSSession
cmdlet obtiene cmdlets, funciones, alias y otros tipos de comandos de otra sesión de PowerShell (PSSession) en un equipo local o remoto y los guarda en un módulo de PowerShell. Para agregar los comandos del módulo a la sesión actual, use el Import-Module
cmdlet .
A diferencia Import-PSSession
de , que importa comandos de otra PSSession en la sesión actual, Export-PSSession
guarda los comandos en un módulo. Los comandos no se importan a la sesión actual.
Para exportar comandos, use el New-PSSession
cmdlet para crear una PSSession que tenga los comandos que desea exportar. A continuación, use el Export-PSSession
cmdlet para exportar los comandos.
Para evitar conflictos de nombres de comando, el valor predeterminado para Export-PSSession
es exportar todos los comandos, excepto los comandos que existen en la sesión actual. Puede usar el parámetro CommandName para especificar los comandos que se van a exportar.
El Export-PSSession
cmdlet usa la característica de comunicación remota implícita de PowerShell. Al importar los comandos en la sesión actual, se ejecutan de manera implícita en la sesión original o en una sesión similar en el equipo de origen.
Ejemplos
Ejemplo 1: Exportación de comandos desde una PSSession
En este ejemplo se crea una nueva PSSession desde el equipo local al equipo Server01. Todos los comandos, excepto los que existen en la sesión actual, se exportan al módulo denominado Server01 en el equipo local. La exportación incluye los datos de formato de los comandos.
$S = New-PSSession -ComputerName Server01
Export-PSSession -Session $S -OutputModule Server01
El New-PSSession
comando crea una PSSession en el equipo Server01. PsSession se almacena en la $S
variable . El Export-PSSession
comando exporta los comandos y los datos de formato de la $S
variable al módulo Server01.
Ejemplo 2: Exportación de los comandos Get y Set
En este ejemplo se exporta todos los Get
comandos y Set
desde un 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
Estos comandos exportan los Get
comandos y Set
desde un complemento de Microsoft Exchange Server en un equipo remoto a un módulo de Exchange en el $PSHOME\Modules
directorio del equipo local.
Colocar el módulo en el $PSHOME\Modules
directorio hace que sea accesible para todos los usuarios del equipo.
Ejemplo 3: Exportación de comandos desde un equipo remoto
En este ejemplo se exportan cmdlets desde una PSSession en un equipo remoto y se guardan en un módulo del equipo local. Los cmdlets del módulo se agregan a la sesión actual para que se puedan usar.
$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
El New-PSSession
comando crea una PSSession en el equipo Server01 y la guarda en la $S
variable . El Export-PSSession
comando exporta los cmdlets cuyos nombres comienzan por Test desde PSSession en $S
al módulo TestCmdlets del equipo local.
El Remove-PSSession
cmdlet elimina la PSSession de $S
de la sesión actual. Este comando muestra que la PSSession no debe estar activa para usar los comandos que se importaron desde la sesión. El Import-Module
cmdlet agrega los cmdlets del módulo TestCmdlets a la sesión actual. El comando se puede ejecutar en cualquier sesión en cualquier momento.
El Get-Help
cmdlet obtiene ayuda para los cmdlets cuyos nombres comienzan por Test. Después de agregar los comandos de un módulo a la sesión actual, puede usar los Get-Help
cmdlets y Get-Command
para obtener información sobre los comandos importados. El Test-Files
cmdlet se exportó desde el equipo Server01 y se agregó a la sesión. El Test-Files
cmdlet se ejecuta en una sesión remota en el equipo desde el que se importó el comando. PowerShell crea una sesión a partir de la información almacenada en el módulo TestCmdlets.
Ejemplo 4: Exportar y comandos clobber en la sesión actual
En este ejemplo se exporta comandos almacenados en una variable en la sesión actual.
Export-PSSession -Session $S -AllowClobber -OutputModule AllCommands
Este Export-PSSession
comando exporta todos los comandos y todos los datos de formato de PSSession de la $S
variable a la sesión actual. El parámetro AllowClobber incluye comandos con los mismos nombres que los comandos de la sesión actual.
Ejemplo 5: Exportación de comandos desde una PSSession cerrada
En este ejemplo se muestra cómo ejecutar los comandos exportados con opciones especiales cuando se cierra la PSSession que creó los comandos exportados.
Si se cierra la sesión remota original cuando se importa un módulo, el módulo usará cualquier sesión remota abierta que se conecte al equipo de origen. Si no hay ninguna sesión actual en el equipo de origen, el módulo restablecerá una sesión.
Para ejecutar comandos exportados con opciones especiales en una sesión remota, debe crear una sesión remota con esas opciones antes de importar el módulo. Uso del New-PSSession
cmdlet con el 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
El New-PSSessionOption
cmdlet crea un objeto PSSessionOption y guarda el objeto en la $Options
variable . El New-PSSession
comando crea una PSSession en el equipo Server01.
El parámetro SessionOption usa el objeto almacenado en $Options
. La sesión se almacena en la $S
variable .
El Export-PSSession
cmdlet exporta comandos de PSSession en $S
al módulo Server01.
El Remove-PSSession
cmdlet elimina la PSSession en la $S
variable .
El New-PSSession
cmdlet crea una nueva PSSession que se conecta al equipo Server01. El parámetro SessionOption usa el objeto almacenado en $Options
. El Import-Module
cmdlet importa los comandos desde el módulo Server01. Los comandos del módulo se ejecutan en PSSession en el equipo Server01.
Parámetros
-AllowClobber
Exporta los comandos especificados, aunque tengan los mismos nombres que los comandos de la sesión actual.
Si exporta un comando con el mismo nombre que un comando en la sesión actual, el comando exportado oculta o reemplaza los comandos originales. Para obtener más información, vea about_Command_Precedence.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ArgumentList
Exporta la variante del comando que resulta de usar los argumentos especificados (valores de parámetro).
Por ejemplo, para exportar la variante del Get-Item
comando en la unidad certificate (Cert:) de PSSession en $S
, escriba 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 el certificado de cliente que se usa para firmar los archivos de formato (*. Format.ps1xml) o archivos de módulo de script (.psm1) en el módulo que Export-PSSession
crea. Introduzca una variable que contenga un certificado o un comando o una expresión que obtenga el certificado.
Para buscar un certificado, use el Get-PfxCertificate
cmdlet o use el Get-ChildItem
cmdlet en la unidad Certificado (Cert:). Si el certificado no es válido o no tiene autoridad suficiente, el comando genera un error.
Type: | X509Certificate2 |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-CommandName
Exporta solo los comandos con los nombres o patrones de nombre especificados. Se permiten los caracteres comodín. Use CommandName o su alias, Name.
De forma predeterminada, Export-PSSession
exporta todos los comandos de PSSession, excepto los comandos que tienen los mismos nombres que los comandos de la sesión actual. Esto impide que los comandos se oculten o reemplacen por comandos en la sesión actual. Para exportar todos los comandos, incluso aquellos que ocultan o reemplazan otros comandos, use el parámetro AllowClobber .
Si usa el parámetro CommandName , los archivos de formato de los comandos no se exportan a menos que use el parámetro FormatTypeName . Del mismo modo, si usa el parámetro FormatTypeName , no se exportan comandos a menos que use el 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 solo los tipos especificados de los objetos de comando. Use CommandType o su alias, Type.
Los valores aceptables para este parámetro son los siguientes:
Alias
: todos los alias de PowerShell de la sesión actual.All
: todos los tipos de comandos. Es el equivalente deGet-Command -Name *
.Application
: todos los archivos que no sean archivos de PowerShell en las rutas de acceso enumeradas en la variable de entorno Path ($env:path
), incluidos los archivos de .txt, .exe y .dll.Cmdlet
: los cmdlets de la sesión actual. El cmdlet es el valor predeterminado.Configuration
: una configuración de PowerShell. Para obtener más información, consulte about_Session_Configurations.ExternalScript
: todos los archivos .ps1 de las rutas de acceso enumeradas en la variable de entorno Path ($env:path
).Filter
yFunction
: todas las funciones de PowerShell.Script
Bloques de script en la sesión actual.Workflow
Flujo de trabajo de PowerShell. Para obtener más información, consulte about_Workflows.
Estos valores se definen como una enumeración basada en marcas. Puede combinar varios valores para establecer varias marcas mediante este parámetro. Los valores se pueden pasar al parámetro CommandType como una matriz de valores o como una cadena separada por comas de esos valores. El cmdlet combinará los valores mediante una operación binary-OR. Pasar valores como una matriz es la opción más sencilla y también permite usar la finalización de tabulación en los 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 el tipo de codificación del archivo de destino. El valor predeterminado es utf8NoBOM
.
Los valores aceptables para este parámetro son los siguientes:
ascii
: usa la codificación para el juego de caracteres ASCII (7 bits).ansi
: usa la codificación para la página de códigos ANSI de la referencia cultural actual. Esta opción se agregó en PowerShell 7.4.bigendianunicode
: codifica en formato UTF-16 mediante el orden de bytes big-endian.bigendianutf32
: codifica en formato UTF-32 mediante el orden de bytes big-endian.oem
: usa la codificación predeterminada para los programas de consola y MS-DOS.unicode
: codifica en formato UTF-16 mediante el orden de bytes little-endian.utf7
: codifica en formato UTF-7.utf8
: codifica en formato UTF-8.utf8BOM
: codifica en formato UTF-8 con marca de orden de bytes (BOM)utf8NoBOM
: codifica en formato UTF-8 sin marca de orden de bytes (BOM)utf32
: codifica en formato UTF-32.
A partir de PowerShell 6.2, el parámetro Encoding también permite identificadores numéricos de páginas de códigos registradas (como -Encoding 1251
) o nombres de cadena de páginas de códigos registradas (como -Encoding "windows-1251"
). Para obtener más información, consulte la documentación de .NET para Encoding.CodePage.
A partir de PowerShell 7.4, puede usar el Ansi
valor del parámetro Encoding para pasar el identificador numérico de la página de códigos ANSI de la referencia cultural actual sin tener que especificarlo manualmente.
Nota:
Ya no se recomienda usar UTF-7*. A partir de PowerShell 7.1, se escribe una advertencia si especifica utf7
para el parámetro Encoding .
Type: | Encoding |
Accepted values: | ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 |
Position: | Named |
Default value: | UTF8NoBOM |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Force
Sobrescribe uno o más archivos de salida existentes, aunque el archivo tenga el atributo de solo lectura.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-FormatTypeName
Exporta las instrucciones de formato solo para los tipos de Microsoft .NET Framework especificados. Escriba los nombres de tipos. De forma predeterminada, Export-PSSession
exporta instrucciones de formato para todos los tipos de .NET Framework que no están en el espacio de nombres System.Management.Automation .
El valor de este parámetro debe ser el nombre de un tipo devuelto por un Get-FormatData
comando en la sesión desde la que se importan los comandos. Para obtener todos los datos de formato en la sesión remota, escriba *
.
Si usa el parámetro FormatTypeName , no se exportan comandos a menos que use el parámetro CommandName .
Si usa el parámetro CommandName , los archivos de formato de los comandos no se exportan a menos que use el parámetro FormatTypeName .
Type: | String[] |
Position: | 3 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-FullyQualifiedModule
El valor puede ser un nombre de módulo, una especificación de módulo completa o una ruta de acceso a un archivo de módulo.
Cuando el valor es una ruta de acceso, la ruta de acceso puede ser completa o relativa. Se resuelve una ruta de acceso relativa con respecto al script que contiene la instrucción using.
Cuando el valor es un nombre o especificación de módulo, PowerShell busca en el módulo especificado la psModulePath .
Una especificación de módulo es una tabla hash que tiene las siguientes claves.
ModuleName
- Obligatorio Especifica el nombre del módulo.GUID
- Opcional Especifica el GUID del módulo.- También es necesario especificar al menos una de las tres claves siguientes.
ModuleVersion
: especifica una versión mínima aceptable del módulo.MaximumVersion
: especifica la versión máxima aceptable del módulo.RequiredVersion
: especifica una versión exacta y necesaria del módulo. Esto no se puede usar con las otras claves de versión.
No se puede especificar el parámetro FullyQualifiedModule en el mismo comando que un parámetro Module . los dos parámetros son mutuamente excluyentes.
Type: | ModuleSpecification[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Module
Exporta solo los comandos de los complementos y módulos de PowerShell especificados. Escriba los nombres de módulo y complemento. No se permiten caracteres comodín.
Para obtener más información, consulte Import-Module
y 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 una ruta de acceso opcional y un nombre para el módulo creado por Export-PSSession
. La ruta de acceso predeterminada es $HOME\Documents\WindowsPowerShell\Modules
. Este parámetro es obligatorio.
Si el subdirectorio del módulo o cualquiera de los archivos que Export-PSSession
crea ya existen, se produce un error en el comando. Para sobrescribir los archivos existentes, use el 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 la PSSession desde la que se exportan los comandos. Escriba una variable que contenga un objeto de sesión o un comando que obtenga un objeto de sesión, como un Get-PSSession
comando. Este parámetro es obligatorio.
Type: | PSSession |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Entradas
None
No se pueden canalizar objetos a este cmdlet.
Salidas
Este cmdlet devuelve una lista de archivos que componen el módulo que creó.
Notas
Export-PSSession
se basa en la infraestructura de comunicación remota de PowerShell. Para usar este cmdlet, el equipo debe estar configurado para comunicación remota. Para obtener más información, consulte about_Remote_Requirements.
No se puede usar Export-PSSession
para exportar un proveedor de PowerShell.
Los comandos exportados se ejecutan implícitamente en la PSSession desde la que se exportaron. PowerShell controla completamente los detalles de la ejecución de los comandos de forma remota. Puede ejecutar los comandos exportados igual que ejecutaría comandos locales.
Export-ModuleMember
captura y guarda información sobre la PSSession en el módulo que exporta. Si la PSSession desde la que se exportaron los comandos se cierra al importar el módulo y no hay PSSessions activas en el mismo equipo, los comandos del módulo intentan volver a crear la PSSession. Si se intenta volver a crear la PSSession, los comandos exportados no se ejecutarán.
La información de sesión que Export-ModuleMember
captura y guarda en el módulo no incluye opciones de sesión, como las que se especifican en la $PSSessionOption
variable de preferencia o mediante el parámetro SessionOption de los New-PSSession
cmdlets , Enter-PSSession
o Invoke-Command
. Si la PSSession original está cerrada al importar el módulo, el módulo utilizará otra PSSession con el mismo equipo, si hay una disponible. Para que los comandos importados se puedan ejecutar en una sesión correctamente configurada, cree una PSSession con las opciones que quiera antes de importar el módulo.
Para buscar los comandos que se van a exportar, Export-PSSession
usa el Invoke-Command
cmdlet para ejecutar un Get-Command
comando en PSSession. Para obtener y guardar datos de formato para los comandos, usa los Get-FormatData
cmdlets y Export-FormatData
. Es posible que vea mensajes de error de Invoke-Command
, Get-Command
, Get-FormatData
y Export-FormatData
al ejecutar un Export-PSSession
comando. Además, Export-PSSession
no se pueden exportar comandos desde una sesión que no incluya los Get-Command
cmdlets , Get-FormatData
, Select-Object
y Get-Help
.
Export-PSSession
usa el Write-Progress
cmdlet para mostrar el progreso del comando. Puede ver la barra de progreso mientras se ejecuta el comando.
Los comandos exportados tienen las mismas limitaciones que otros comandos remotos, incluida la imposibilidad de iniciar un programa con una interfaz de usuario, como el Bloc de notas.
Dado que los perfiles de PowerShell no se ejecutan en PSSessions, los comandos que agrega un perfil a una sesión no están disponibles para Export-PSSession
. Para exportar comandos desde un perfil, use un Invoke-Command
comando para ejecutar el perfil en PSSession manualmente antes de exportar comandos.
El módulo que Export-PSSession
crea podría incluir un archivo de formato, incluso si el comando no importa datos de formato. Si el comando no importa datos de formato, ninguno de los archivos de formato creados contendrá datos de formato.