Export-PSSession
Exporta comandos desde otra sesión y los guarda en un módulo de PowerShell.
Sintaxis
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
El cmdlet Export-PSSession 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 cmdlet Import-Module.
A diferencia de Import-PSSession, que importa comandos de otra PSSession a la sesión actual, Export-PSSession guarda los comandos en un módulo. Los comandos no se importan en la sesión actual.
Para exportar comandos, use el cmdlet New-PSSession para crear una PSSession que tenga los comandos que desea exportar. A continuación, use el cmdlet Export-PSSession para exportar los comandos.
Para evitar conflictos de nombres de comando, el valor predeterminado de 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 cmdlet Export-PSSession usa la característica de comunicación remota implícita de PowerShell. Al importar comandos en la sesión actual, se ejecutan implícitamente 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 comando New-PSSession crea una PSSession en el equipo Server01. PsSession se almacena en la variable $S. El comando Export-PSSession exporta los comandos de la variable $S y los datos de formato al módulo Server01.
Ejemplo 2: Exportación de los comandos Get y Set
En este ejemplo se exporta todos los comandos Get y Set desde un 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
Estos comandos exportan los comandos Get y Set desde un complemento de Microsoft Exchange Server en un equipo remoto a un módulo de Exchange en el directorio $PSHOME\Modules del equipo local.
Colocar el módulo en el directorio $PSHOME\Modules 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.
$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
El comando New-PSSession crea una PSSession en el equipo Server01 y la guarda en la variable $S. El comando Export-PSSession exporta los cmdlets cuyos nombres comienzan por Test desde PSSession en $S al módulo TestCmdlets del equipo local.
El cmdlet Remove-PSSession elimina la PSSession en $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 cmdlet Import-Module agrega los cmdlets en el módulo TestCmdlets a la sesión actual. El comando se puede ejecutar en cualquier sesión en cualquier momento.
El cmdlet Get-Help 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 cmdlets Get-Help y Get-Command para obtener información sobre los comandos importados. El cmdlet Test-Files se exportó desde el equipo Server01 y se agregó a la sesión. El cmdlet Test-Files 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 comando Export-PSSession exporta todos los comandos y todos los datos de formato de PSSession en la variable $S 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 cmdlet New-PSSession 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 cmdlet New-PSSessionOption crea un objeto de PSSessionOption y guarda el objeto en la variable $Options. El comando New-PSSession crea una PSSession en el equipo Server01.
El parámetro sessionOption de usa el objeto almacenado en $Options. La sesión se almacena en la variable $S.
El cmdlet Export-PSSession exporta comandos de PSSession en $S al módulo Server01.
El cmdlet Remove-PSSession elimina la PSSession en la variable $S.
El cmdlet New-PSSession crea una nueva PSSession que se conecta al equipo Server01. El parámetro sessionOption de usa el objeto almacenado en $Options. El cmdlet Import-Module importa los comandos del módulo Server01. Los comandos del módulo se ejecutan en PSSession en el equipo Server01.
Parámetros
-AllowClobber
Exporta los comandos especificados, incluso si tienen 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.
Propiedades del parámetro
| Tipo: | SwitchParameter |
| Valor predeterminado: | None |
| Admite caracteres comodín: | False |
| DontShow: | False |
Conjuntos de parámetros
(All)
| Posición: | Named |
| Mandatory: | False |
| Valor de la canalización: | False |
| Valor de la canalización por nombre de propiedad: | False |
| Valor de los argumentos restantes: | 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 comando Get-Item en la unidad de certificado (Cert:) de PSSession en $S, escriba Export-PSSession -Session $S -Command Get-Item -ArgumentList Cert:.
Propiedades del parámetro
| Tipo: | Object[] |
| Valor predeterminado: | None |
| Admite caracteres comodín: | False |
| DontShow: | False |
| Alias: | Argumentos |
Conjuntos de parámetros
(All)
| Posición: | Named |
| Mandatory: | False |
| Valor de la canalización: | False |
| Valor de la canalización por nombre de propiedad: | False |
| Valor de los argumentos restantes: | 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. Escriba una variable que contenga un certificado o un comando o expresión que obtenga el certificado.
Para buscar un certificado, use el cmdlet Get-PfxCertificate o use el cmdlet Get-ChildItem en la unidad Certificado (Cert:). Si el certificado no es válido o no tiene suficiente autoridad, se produce un error en el comando.
Propiedades del parámetro
| Tipo: | X509Certificate2 |
| Valor predeterminado: | None |
| Admite caracteres comodín: | False |
| DontShow: | False |
Conjuntos de parámetros
(All)
| Posición: | Named |
| Mandatory: | False |
| Valor de la canalización: | False |
| Valor de la canalización por nombre de propiedad: | False |
| Valor de los argumentos restantes: | False |
-CommandName
Exporta solo los comandos con los nombres o patrones de nombre especificados. Se permiten los caracteres comodín. Use
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 exporta ningún comando a menos que use el parámetro CommandName.
Propiedades del parámetro
| Tipo: | String[] |
| Valor predeterminado: | All commands in the session. |
| Admite caracteres comodín: | True |
| DontShow: | False |
| Alias: | Nombre |
Conjuntos de parámetros
(All)
| Posición: | 2 |
| Mandatory: | False |
| Valor de la canalización: | False |
| Valor de la canalización por nombre de propiedad: | False |
| Valor de los argumentos restantes: | False |
-CommandType
Exporta solo los tipos especificados de 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, .exey .dll. -
Cmdlet: los cmdlets de la sesión actual. El cmdlet es el valor predeterminado. -
Configuration: configuración de PowerShell. Para obtener más información, vea about_Session_Configurations. -
ExternalScript: todos los archivos.ps1de las rutas de acceso enumeradas en la variable de entorno PATH ($Env:PATH). -
FilteryFunction: todas las funciones de PowerShell. -
Scriptbloques de script en la sesión actual. -
Workflowflujo de trabajo de PowerShell. Para obtener más información, vea 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.
Propiedades del parámetro
| Tipo: | CommandTypes |
| Valor predeterminado: | All commands in the session. |
| Valores aceptados: | Alias, All, Application, Cmdlet, Configuration, ExternalScript, Filter, Function, Script, Workflow |
| Admite caracteres comodín: | False |
| DontShow: | False |
| Alias: | Tipo |
Conjuntos de parámetros
(All)
| Posición: | Named |
| Mandatory: | False |
| Valor de la canalización: | False |
| Valor de la canalización por nombre de propiedad: | False |
| Valor de los argumentos restantes: | False |
-Encoding
Especifica el tipo de codificación para el archivo de destino. El valor predeterminado es utf8NoBOM.
Los valores aceptables para este parámetro son los siguientes:
-
ascii: Utiliza la codificación para el conjunto de caracteres ASCII (7 bits). -
ansi: utiliza la codificación para la página de códigos ANSI de la cultura actual. Esta opción se agregó en PowerShell 7.4. -
bigendianunicode: codifica en formato UTF-16 utilizando el orden de bytes big-endian. -
bigendianutf32: codifica en formato UTF-32 utilizando el orden de bytes big-endian. -
oem: usa la codificación predeterminada para MS-DOS y programas de consola. -
unicode: codifica en formato UTF-16 utilizando 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 Byte Order Mark (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 Codificación 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 utilizar el valor Ansi para el parámetro de Codificación para pasar el identificador numérico de la página de códigos ANSI de la cultura actual sin tener que especificarlo manualmente.
Nota:
UTF-7* ya no se recomienda usar. A partir de PowerShell 7.1, se escribe una advertencia si especifica utf7 para el parámetro Encoding.
Propiedades del parámetro
| Tipo: | Encoding |
| Valor predeterminado: | UTF8NoBOM |
| Valores aceptados: | ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 |
| Admite caracteres comodín: | False |
| DontShow: | False |
Conjuntos de parámetros
(All)
| Posición: | Named |
| Mandatory: | False |
| Valor de la canalización: | False |
| Valor de la canalización por nombre de propiedad: | False |
| Valor de los argumentos restantes: | False |
-Force
Sobrescribe uno o varios archivos de salida existentes, incluso si el archivo tiene el atributo de solo lectura.
Propiedades del parámetro
| Tipo: | SwitchParameter |
| Valor predeterminado: | None |
| Admite caracteres comodín: | False |
| DontShow: | False |
Conjuntos de parámetros
(All)
| Posición: | Named |
| Mandatory: | False |
| Valor de la canalización: | False |
| Valor de la canalización por nombre de propiedad: | False |
| Valor de los argumentos restantes: | 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 comando Get-FormatData 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 exporta ningún comando 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.
Propiedades del parámetro
| Tipo: | String[] |
| Valor predeterminado: | None |
| Admite caracteres comodín: | False |
| DontShow: | False |
Conjuntos de parámetros
(All)
| Posición: | 3 |
| Mandatory: | False |
| Valor de la canalización: | False |
| Valor de la canalización por nombre de propiedad: | False |
| Valor de los argumentos restantes: | 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 psModulePath
Una especificación de módulo es una tabla hash que tiene las siguientes claves.
-
ModuleName- Required Especifica el nombre del módulo. -
GUID- opcional Especifica el GUID del módulo. - También es obligatorio 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.
Propiedades del parámetro
| Tipo: | |
| Valor predeterminado: | None |
| Admite caracteres comodín: | False |
| DontShow: | False |
Conjuntos de parámetros
(All)
| Posición: | Named |
| Mandatory: | False |
| Valor de la canalización: | False |
| Valor de la canalización por nombre de propiedad: | False |
| Valor de los argumentos restantes: | False |
-Module
Exporta solo los comandos de los complementos y módulos de PowerShell especificados. Escriba los nombres del complemento y del módulo. No se permiten caracteres comodín.
Para obtener más información, vea Import-Module y about_PSSnapins.
Propiedades del parámetro
| Tipo: | String[] |
| Valor predeterminado: | All commands in the session. |
| Admite caracteres comodín: | False |
| DontShow: | False |
| Alias: | PSSnapin |
Conjuntos de parámetros
(All)
| Posición: | Named |
| Mandatory: | False |
| Valor de la canalización: | False |
| Valor de la canalización por nombre de propiedad: | False |
| Valor de los argumentos restantes: | 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.
Propiedades del parámetro
| Tipo: | String |
| Valor predeterminado: | $HOME\Documents\WindowsPowerShell\Modules |
| Admite caracteres comodín: | False |
| DontShow: | False |
| Alias: | PSPath, ModuleName |
Conjuntos de parámetros
(All)
| Posición: | 1 |
| Mandatory: | True |
| Valor de la canalización: | False |
| Valor de la canalización por nombre de propiedad: | False |
| Valor de los argumentos restantes: | 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 comando Get-PSSession. Este parámetro es obligatorio.
Propiedades del parámetro
| Tipo: | PSSession |
| Valor predeterminado: | None |
| Admite caracteres comodín: | False |
| DontShow: | False |
Conjuntos de parámetros
(All)
| Posición: | 0 |
| Mandatory: | True |
| Valor de la canalización: | False |
| Valor de la canalización por nombre de propiedad: | False |
| Valor de los argumentos restantes: | False |
CommonParameters
Este cmdlet admite los parámetros comunes: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction y -WarningVariable. Para obtener más información, vea about_CommonParameters.
Entradas
None
No se pueden canalizar objetos a este cmdlet.
Salidas
FileInfo
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 configurarse para la comunicación remota. Para obtener más información, consulte about_Remote_Requirements.
No 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 del mismo modo 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 especifique en la variable de preferencia de $PSSessionOption o mediante el parámetro sessionOption del New-PSSession, Enter-PSSessiono Invoke-Command cmdlets. Si se cierra la PSSession original al importar el módulo, el módulo usará otra PSSession en el mismo equipo, si está disponible. Para permitir que los comandos importados se ejecuten en una sesión configurada correctamente, cree una PSSession con las opciones que desee antes de importar el módulo.
Para buscar los comandos que se van a exportar, Export-PSSession usa el cmdlet Invoke-Command para ejecutar un comando Get-Command en PSSession. Para obtener y guardar datos de formato para los comandos, usa los cmdlets Get-FormatData y Export-FormatData. Es posible que vea mensajes de error de Invoke-Command, Get-Command, Get-FormatDatay Export-FormatData al ejecutar un comando Export-PSSession. Además, Export-PSSession no puede exportar comandos desde una sesión que no incluya los cmdlets Get-Command, Get-FormatData, Select-Objecty Get-Help.
Export-PSSession usa el cmdlet Write-Progress para mostrar el progreso del comando. Es posible que vea la barra de progreso mientras se ejecuta el comando.
Los comandos exportados tienen las mismas limitaciones que otros comandos remotos, incluida la incapacidad 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 comando Invoke-Command 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, los archivos de formato creados no contendrán datos de formato.