Importa comandos de otra sesión y los guarda en un módulo de Windows PowerShell.

Sintaxis

Export-PSSession [-Session] <PSSession> [-OutputModule] <string> [[-CommandName] <string[]>] [[-FormatTypeName] <string[]>] [-AllowClobber] [-ArgumentList <Object[]>] [-CommandType {<Alias> | <Function> | <Filter> | <Cmdlet> | <ExternalScript> | <Application> | <Script> | <All>}] [-Encoding <string>] [-Force] [-Module <string[]>] [<CommonParameters>]

Descripción

El cmdlet Export-PSSession obtiene cmdlets, funciones, alias y otros tipos de comando de otra PSSession en un equipo local o remoto y los guarda en un módulo de Windows PowerShell. Para agregar los comandos del módulo a la sesión actual, utilice el cmdlet Import-Module.

A diferencia de Import-PSSession, que importa los comandos de otra PSSession en 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 los comandos, utilice primero el cmdlet New-PSSession para crear una PSSession que tenga los comandos que desee exportar. A continuación, utilice el cmdlet Export-PSSession para exportar los comandos. De forma predeterminada, Export-PSSession exporta todos los comandos, salvo los que existen en la sesión actual. Sin embargo, se puede usar el parámetro CommandName para especificar los comandos que deben exportarse.

El cmdlet Export-PSSession usa la característica de comunicación remota de Windows PowerShell. Cuando se importan comandos en la sesión actual, estos se ejecutan de forma implícita en la sesión original o en una sesión similar en el equipo original.

Parámetros

-AllowClobber

Exporta los comandos especificados, incluso si tienen el mismo nombre que los comandos de la sesión actual.

Si se importa un comando que tiene el mismo nombre que un comando de la sesión actual, el comando importado ocultará o reemplazará el comando original. Para obtener más información, vea about_Command_Precedence.

Export-PSSession no importa los comandos que tienen los mismos nombres que los comandos de la sesión actual. Este comportamiento predeterminado evita conflictos entre los nombres de comandos.

¿Requerido?

false

¿Posición?

named

Valor predeterminado

False

¿Aceptar canalización?

false

¿Aceptar caracteres comodín?

false

-ArgumentList <Object[]>

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:".

¿Requerido?

false

¿Posición?

named

Valor predeterminado

ninguno

¿Aceptar canalización?

false

¿Aceptar caracteres comodín?

false

-CommandName <string[]>

Exporta solo los comandos con los nombres o patrones de nombre especificados. Se permite el uso de caracteres comodín. Utilice "CommandName" o su alias, "Name".

De forma predeterminada, Export-PSSession exporta todos los comandos de la PSSession, salvo los que tienen el mismo nombre que los comandos de la sesión actual. De este modo, se evita que los comandos importados oculten o reemplacen los comandos de la sesión actual. Para exportar todos los comandos, incluidos los que ocultan o reemplazan otros comandos, utilice el parámetro AllowClobber.

Si utiliza el parámetro CommandName, no se exportarán los archivos de formato de los comandos a menos que use el parámetro FormatTypeName. De forma similar, si utiliza el parámetro FormatTypeName, no se exportará ningún comando a menos que use el parámetro CommandName.

¿Requerido?

false

¿Posición?

3

Valor predeterminado

All commands in the session.

¿Aceptar canalización?

false

¿Aceptar caracteres comodín?

true

-CommandType <CommandTypes>

Exporta únicamente los tipos de objetos de comando especificados. Use "CommandType" o su alias, "Type".

Los valores válidos son:

-- Alias: todos los alias de Windows PowerShell en la sesión actual.

-- All: todos los tipos de comandos. Es el equivalente de "Get-Command *".

-- Application: todos los archivos que no sean de Windows PowerShell en las rutas de acceso enumeradas en la variable de entorno Path ($env:path), incluidos los archivos .txt, .exe y .dll.

-- Cmdlet: los cmdlets de la sesión actual. "Cmdlet" es el valor predeterminado.

-- ExternalScript: todos los archivos .ps1 en las rutas de acceso enumeradas en la variable de entorno Path ($env:path).

-- Filter y Function: todas las funciones de Windows PowerShell.

-- Script: bloques de script en la sesión actual.

¿Requerido?

false

¿Posición?

named

Valor predeterminado

All commands in the session.

¿Aceptar canalización?

false

¿Aceptar caracteres comodín?

false

-Encoding <string>

Especifica la codificación para los archivos de salida. Los valores válidos son "Unicode", "UTF7", "UTF8", "ASCII", "UTF32", "BigEndianUnicode", "Default" y "OEM". El valor predeterminado es "UTF-8".

¿Requerido?

false

¿Posición?

named

Valor predeterminado

UTF-8

¿Aceptar canalización?

false

¿Aceptar caracteres comodín?

false

-Force

Sobrescribe uno o varios archivos de salida existentes, incluso si tienen establecido el atributo de solo lectura.

¿Requerido?

false

¿Posición?

named

Valor predeterminado

False

¿Aceptar canalización?

false

¿Aceptar caracteres comodín?

false

-FormatTypeName <string[]>

Exporta solo las instrucciones de formato de los tipos de Microsoft .NET Framework especificados. Escriba los nombres de los tipos. De forma predeterminada, Export-PSSession exporta las instrucciones de formato de todos los tipos de .NET Framework que no formen parte del 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 de la sesión remota, escriba *.

Si utiliza el parámetro FormatTypeName, no se exportará ningún comando a menos que use el parámetro CommandName.

De forma similar, si utiliza el parámetro CommandName, no se exportarán los archivos de formato de los comandos a menos que use el parámetro FormatTypeName.

¿Requerido?

false

¿Posición?

4

Valor predeterminado

¿Aceptar canalización?

false

¿Aceptar caracteres comodín?

false

-Module <string[]>

Exporta solo los comandos de los complementos y módulos especificados de Windows PowerShell. Escriba los nombres de los complementos y módulos. No se permite el uso de caracteres comodín.

Para obtener más información, vea about_Pssnapins e Import-Module.

¿Requerido?

false

¿Posición?

named

Valor predeterminado

All commands in the session.

¿Aceptar canalización?

false

¿Aceptar caracteres comodín?

false

-OutputModule <string>

Especifica una ruta de acceso (opcional) y un nombre para el módulo creado por Export-PSSession. La ruta de acceso predeterminada es $home\Documentos\WindowsPowerShell\Modules. Este parámetro es obligatorio.

Si ya existe el subdirectorio del módulo o cualquiera de los archivos creados por Export-PSSession, el comando generará un error. Para que se sobrescriban los archivos existentes, utilice el parámetro Force.

¿Requerido?

true

¿Posición?

2

Valor predeterminado

¿Aceptar canalización?

false

¿Aceptar caracteres comodín?

false

-Session <PSSession>

Especifica la PSSession de la que se exportan los comandos. Escriba una variable que contenga el objeto de sesión o escriba un comando que lo obtenga, como un comando Get-PSSession. Este parámetro es obligatorio.

¿Requerido?

true

¿Posición?

1

Valor predeterminado

ninguno

¿Aceptar canalización?

false

¿Aceptar caracteres comodín?

false

<CommonParameters>

Este cmdlet admite los parámetros comunes: -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer y -OutVariable. Para obtener más información, vea about_Commonparameters.

Entradas y salidas

El tipo de entrada es el tipo de los objetos que se pueden canalizar al cmdlet. El tipo devuelto es el tipo de los objetos que el cmdlet devuelve.

Entradas

Ninguno

No se pueden canalizar objetos a Export-PSSession.

Salidas

System.IO.FileInfo

Export-PSSession devuelve una lista de los archivos que comprenden el módulo que creó.

Notas

Export-PSSession se basa en la infraestructura de comunicación remota de Windows PowerShell. Para poder utilizar este cmdlet, el equipo debe estar configurado para la comunicación remota. Para obtener más información, vea about_Remote_Requirements.

No puede utilizar Export-PSSession para exportar un proveedor de Windows PowerShell.

Los comandos exportados se ejecutan implícitamente en la PSSession de la que se exportaron. Sin embargo, Windows PowerShell se encarga de todos los detalles de la ejecución remota de los comandos. Los comandos exportados se pueden ejecutar de la misma manera que los comandos locales.

Export-Module captura y guarda la información de la PSSession en el módulo que exporta. Si está cerrada la PSSession de la que se exportaron los comandos al importar el módulo y no hay ninguna PSSession activa en el mismo equipo, los comandos del módulo intentarán crear de nuevo la PSSession. Si se genera un error al intentar crear de nuevo la PSSession, los comandos exportados no se ejecutarán.

La información de la sesión que Export-Module captura y guarda en el módulo no incluye las opciones de la sesión, como las que se especifican en la variable automática $PSSessionOption o mediante los parámetros SessionOption del cmdlet New-PSSession, Enter-PSSession o Invoke-Command. Si la PSSession original está cerrada al importar el módulo, este utilizará otra PSSession con el mismo equipo si hay alguna disponible. Para que los comandos importados se ejecuten en una sesión correctamente configurada, cree una PSSession con las opciones que desee antes de importar el módulo.

Para obtener los comandos que se van a exportar, Export-PSSession utiliza el cmdlet Invoke-Command para ejecutar un comando Get-Command en la PSSession. Para obtener y guardar los datos de formato de los comandos, se usan los cmdlets Get-FormatData y Export-FormatData. Es posible que aparezcan mensajes de error de Invoke-Command, Get-Command, Get-FormatData y Export-FormatData al ejecutarse un comando Export-PSSession. Además, Export-PSSession no puede exportar los comandos de una sesión que no incluye los cmdlets Get-Command, Get-FormatData, Select-Object y Get-Help.

Export-PSSession utiliza el cmdlet Write-Progress para mostrar el progreso del comando. Es posible que se vea la barra de progreso durante la ejecución del comando.

Los comandos exportados tienen las mismas limitaciones que otros comandos remotos; por ejemplo, no pueden iniciar programas con una interfaz de usuario, como Bloc de notas.

Dado que los perfiles de Windows PowerShell no se ejecutan en sesiones PSSession, los comandos que un perfil agrega a una sesión no están disponibles para Export-PSSession. Si desea exportar los comandos de un perfil, use un comando Invoke-Command para ejecutar manualmente el perfil en la PSSession antes de exportar los comandos.

El módulo que Export-PSSession crea podría incluir un archivo de formato, incluso si el comando no importa los datos de formato. Si el comando no importa los datos de formato, los archivos de formato que se creen no incluirán datos de formato.

Ejemplo 1

C:\PS>$s = new-pssession -computerName Server01

C:\PS> export-pssession -session $s -outputModule Server01

Descripción
-----------
Los comandos de este ejemplo exportan todos los comandos de una PSSession en el equipo Server01 al módulo Server01 en el equipo local, salvo los comandos que tienen el mismo nombre que los comandos de la sesión actual. También se exportan los datos de formato de los comandos.   

El primer comando crea una PSSession en el equipo Server01. El segundo comando exporta los comandos y los datos de formato de la sesión al módulo Server01.






Ejemplo 2

C:\PS>$s = new-pssession -ConnectionUri http://exchange.microsoft.com/mailbox -credential exchangeadmin01@hotmail.com -authentication negotiate

C:\PS> export-pssession -session $r -module exch* -commandname get-*, set-* -formattypename * -outputModule $pshome\Modules\Exchange -encoding ASCII

Descripción
-----------
Estos comandos exportan los comandos Get y Set de un complemento de Microsoft Exchange Server en un equipo remoto a un módulo de Exchange en el directorio $pshome\Modules del equipo local.

Al colocarse el módulo en el directorio $pshome\Modules, todos los usuarios del equipo podrán obtener acceso al mismo.






Ejemplo 3

C:\PS>$s = new-pssession -computerName Server01 -credential Server01\User01

C:\PS> export-pssession -session $s -outputModule TestCmdlets -type cmdlet -commandname *test* -formattypename *

C:\PS> remove-pssession $s

C:\PS> import-module TestCmdlets

C:\PS> get-help test*

C:\PS> test-files

Descripción
-----------
Estos comandos exportan los cmdlets de una PSSession en un equipo remoto y los guarda en un módulo ubicado en el equipo local. A continuación, los comandos agregan los cmdlets del módulo a la sesión actual de modo que se puedan utilizar.

El primer comando crea una PSSession en el equipo Server01 y la guarda en la variable $s.

El segundo comando exporta los cmdlets cuyo nombre comienza con "Test" de la PSSession guardada en $s al módulo TestCmdlets ubicado en el equipo local.

El tercer comando usa el cmdlet Remove-PSSession para eliminar la PSSession guardada en $s de la sesión actual. Este comando muestra que la PSSession debe estar activa para poder utilizar los comandos importadas de dicha sesión.

El cuarto comando, que se puede ejecutar en cualquier sesión y en cualquier momento, utiliza el cmdlet Import-Module para agregar los cmdlets del módulo TestCmdlets a la sesión actual.

El quinto comando utiliza el cmdlet Get-Help para obtener ayuda referente a los cmdlets cuyo nombre comienza con "Test". Una vez agregados a la sesión actual los comandos de un módulo, puede utilizar los cmdlets Get-Help y Get-Command para obtener información sobre los comandos importados, tal y como los utilizaría para cualquier comando de la sesión.

El sexto comando utiliza el cmdlet Test-Files, que se exportó del equipo Server01 y se agregó a la sesión. 

Aunque no es obvio, el comando Test-Files se ejecuta en realidad en una sesión remota en el equipo del que se importó el comando. Windows PowerShell crea una sesión a partir de la información almacenada en el módulo.






Ejemplo 4

C:\PS>export-pssession -session $s -AllowClobber -outputModule AllCommands

Descripción
-----------
Este comando exporta a la sesión actual todos los comandos y datos de formato de la PSSession guardada en la variable $s. El comando utiliza el parámetro AllowClobber para incluir los comandos que tienen el mismo nombre que comandos de la sesión actual.






Ejemplo 5

C:\PS>$options = New-PSSessionOption -NoMachineProfile

C:\PS> $s = new-pssession -computername Server01 -sessionoption $options

C:\PS> export-pssession -session $s -outputModule Server01

C:\PS> remove-pssession $s

C:\PS> new-pssession -computername Server01 -sessionoption $options

C:\PS> import-module Server01

Descripción
-----------
En este ejemplo, se muestra cómo ejecutar los comandos exportados en una sesión con opciones concretas cuando está cerrada la PSSession de la que se exportaron los comandos.

Cuando se usa Export-PSSession, la información sobre la PSSession original se guarda en el módulo que se crea. Al importar el módulo, si está cerrada la sesión remota original, el módulo utilizará cualquier sesión remota abierta que esté conectada al equipo original. 

Si la sesión actual no incluye una sesión remota con el equipo original, los comandos del módulo restablecerán una sesión con ese equipo. Sin embargo, Export-PSSession no guarda en el módulo las opciones especiales, como las que se establecen mediante el parámetro SessionOption de New-PSSession. 

Por consiguiente, si desea ejecutar los comandos exportados en una sesión remota con opciones concretas, deberá crear una sesión remota con las opciones que desee antes de importar el módulo.

El primer comando utiliza el cmdlet New-PSSessionOption para crear un objeto PSSessionOption y guarda este objeto en la variable $options.

El segundo comando crea una PSSession con las opciones especificadas. El comando utiliza el cmdlet New-PSSession para crear una PSSession en el equipo Server01. Utiliza el parámetro SessionOption para enviar el objeto de opción guardado en $options. 

El tercer comando usa el cmdlet Export-PSSession para exportar los comandos de la PSSession guardada en $s al módulo Server01.

El cuarto comando usa el cmdlet Remove-PSSession para eliminar la PSSession guardada en la variable $s.

El quinto comando utiliza el cmdlet New-PSSession para crear una nueva PSSession que está conectada al equipo Server01. Esta PSSession también utiliza las opciones de sesión guardadas en la variable $options.

El sexto comando usa el cmdlet Import-Module para importar los comandos del módulo Server01. Los comandos del módulo se ejecutan en la PSSession del equipo Server01.






Vea también




Tabla de contenido