Importe des commandes à partir d'une autre session et les enregistre dans un module Windows PowerShell.

Syntaxe

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>]

Description

L'applet de commande Export-PSSession obtient les applets de commande, fonctions, alias et autres types de commandes d'une autre session PSSession sur un ordinateur local ou distant, puis les enregistre dans un moduleWindows PowerShell. Pour ajouter les commandes du module à la session active, utilisez l'applet de commande Import-Module.

Contrairement à Import-PSSession, qui importe des commandes dans la session active à partir d'une autre session PSSession, Export-PSSession enregistre les commandes dans un module. Les commandes ne sont pas importées dans la session active.

Pour exporter des commandes, commencez par utiliser l'applet de commande New-PSSession pour créer une session PSSession contenant les commandes à exporter. Utilisez ensuite l'applet de commande Export-PSSession pour exporter les commandes. Par défaut, Export-PSSession exporte toutes les commandes, à l'exception de celles qui existent dans la session active, mais vous pouvez utiliser les paramètres CommandName pour spécifier les commandes à exporter.

L'applet de commande Export-PSSession utilise la fonctionnalité de communication à distance implicite de Windows PowerShell. Lorsque vous importez des commandes dans la session active, elles s'exécutent implicitement dans la session d'origine ou dans une session similaire sur l'ordinateur d'origine.

Paramètres

-AllowClobber

Exporte les commandes spécifiées, même si elles portent le même nom que des commandes de la session active.

Si vous importez une commande portant le même nom qu'une commande de la session active, la commande importée masque ou remplace les commandes d'origine. Pour plus d'informations, consultez about_Command_Precedence.

Export-PSSession n'importe pas les commandes portant le même nom que des commandes de la session active. Le comportement par défaut est conçu pour empêcher les conflits de noms de commandes.

Obligatoire ?

false

Position ?

named

Valeur par défaut

False

Accepter l'entrée de pipeline ?

false

Accepter les caractères génériques ?

false

-ArgumentList <Object[]>

Exporte la variante de la commande qui résulte de l'utilisation des arguments spécifiés (valeurs de paramètre).

Par exemple, pour exporter la variante de la commande Get-Item du lecteur de certificat (Cert:) dans la session PSSession de $s, tapez « export-pssession -session $s -command Get-Item -argumentlist cert: ».

Obligatoire ?

false

Position ?

named

Valeur par défaut

aucun

Accepter l'entrée de pipeline ?

false

Accepter les caractères génériques ?

false

-CommandName <string[]>

Exporte uniquement les commandes possédant les modèles de noms ou les noms spécifiés. Les caractères génériques sont autorisés. Utilisez « CommandName » ou son alias, « Name ».

Par défaut, Export-PSSession exporte toutes les commandes de la session PSSession, à l'exception de celles portant le même nom que des commandes de la session active. Cela évite que les commandes importées masquent ou remplacent les commandes de la session active. Pour exporter toutes les commandes, y compris celles masquant ou remplaçant d'autres commandes, utilisez le paramètre AllowClobber.

Si vous utilisez le paramètre CommandName, les fichiers de mise en forme des commandes ne sont pas exportés, à moins que vous utilisiez le paramètre FormatTypeName. De la même manière, si vous utilisez le paramètre FormatTypeName, aucune commande n'est exportée, à moins que vous utilisiez le paramètre CommandName.

Obligatoire ?

false

Position ?

3

Valeur par défaut

All commands in the session.

Accepter l'entrée de pipeline ?

false

Accepter les caractères génériques ?

true

-CommandType <CommandTypes>

Exporte uniquement les types d'objets de commande spécifiés. Utilisez « CommandType » ou son alias, « Type ».

Les valeurs valides sont :

-- Alias : tous les alias Windows PowerShell de la session active.

-- All : tous les types de commandes. Il s'agit de l'équivalent de « get-command * ».

-- Application : tous les fichiers autres que les fichiers Windows PowerShell dans les chemins d'accès répertoriés dans la variable d'environnement Path ($env:path), notamment les fichiers .txt, .exe. et .dll.

-- Cmdlet : applets de commande dans la session active. « Cmdlet » est la valeur par défaut.

-- ExternalScript : tous les fichiers .ps1 dans les chemins d'accès répertoriés dans la variable d'environnement Path ($env:path).

-- Filter et Function : toutes les fonctions Windows PowerShell.

-- Script : blocs de script dans la session active.

Obligatoire ?

false

Position ?

named

Valeur par défaut

All commands in the session.

Accepter l'entrée de pipeline ?

false

Accepter les caractères génériques ?

false

-Encoding <string>

Spécifie l'encodage des fichiers de sortie. Les valeurs valides sont « Unicode », « UTF7 », « UTF8 », « ASCII », « UTF32 », « BigEndianUnicode », « Default » et « OEM ». La valeur par défaut est « UTF-8 ».

Obligatoire ?

false

Position ?

named

Valeur par défaut

UTF-8

Accepter l'entrée de pipeline ?

false

Accepter les caractères génériques ?

false

-Force

Remplace un ou plusieurs fichiers de sortie existants, même si ce fichier possède l'attribut de lecture seule.

Obligatoire ?

false

Position ?

named

Valeur par défaut

False

Accepter l'entrée de pipeline ?

false

Accepter les caractères génériques ?

false

-FormatTypeName <string[]>

Exporte uniquement les instructions de mise en forme des types Microsoft .NET Framework spécifiés. Entrez les noms de types. Par défaut, Export-PSSession exporte les instructions de mise en forme de tous les types .NET Framework qui ne sont pas dans l'espace de noms System.Management.Automation.

La valeur de ce paramètre doit être le nom d'un type retourné par une commande Get-FormatData dans la session à partir de laquelle les commandes sont importées. Pour obtenir toutes les données de mise en forme de la session à distance, tapez *.

Si vous utilisez le paramètre FormatTypeName, aucune commande n'est exportée, à moins que vous utilisiez le paramètre CommandName.

De même, si vous utilisez le paramètre CommandName, les fichiers de mise en forme des commandes ne sont pas exportés, à moins que vous utilisiez le paramètre FormatTypeName.

Obligatoire ?

false

Position ?

4

Valeur par défaut

Accepter l'entrée de pipeline ?

false

Accepter les caractères génériques ?

false

-Module <string[]>

Exporte uniquement les commandes dans les composants logiciels enfichables et les modules Windows PowerShell spécifiés. Entrez les noms des modules et des composants logiciels enfichables. Les caractères génériques ne sont pas autorisés.

Pour plus d'informations, consultez about_Pssnapins et Import-Module.

Obligatoire ?

false

Position ?

named

Valeur par défaut

All commands in the session.

Accepter l'entrée de pipeline ?

false

Accepter les caractères génériques ?

false

-OutputModule <string>

Spécifie un chemin d'accès (facultatif) et un nom pour le module créé par Export-PSSession. Le chemin d'accès par défaut est $home\Documents\WindowsPowerShell\Modules. Ce paramètre est obligatoire.

Si le sous-répertoire du module ou l'un des fichiers créés par Export-PSSession existe déjà, la commande échoue. Pour remplacer les fichiers existants, utilisez le paramètre Force.

Obligatoire ?

true

Position ?

2

Valeur par défaut

Accepter l'entrée de pipeline ?

false

Accepter les caractères génériques ?

false

-Session <PSSession>

Spécifie la session PSSession à partir de laquelle les commandes sont exportées. Entrez une variable qui contient un objet session ou une commande qui obtient un objet session, telle qu'une commande Get-PSSession. Ce paramètre est obligatoire.

Obligatoire ?

true

Position ?

1

Valeur par défaut

aucun

Accepter l'entrée de pipeline ?

false

Accepter les caractères génériques ?

false

<CommonParameters>

Cette applet de commande prend en charge les paramètres courants : -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer et -OutVariable. Pour plus d'informations, consultez about_Commonparameters.

Entrées et sorties

Le type d'entrée est le type des objets que vous pouvez diriger vers l'applet de commande. Le type de retour est le type des objets que l'applet de commande retourne.

Entrées

Aucun

Vous ne pouvez pas diriger d'objets vers Export-PSSession.

Sorties

System.IO.FileInfo

Export-PSSession retourne une liste des fichiers comprenant le module qu'elle a créé.

Remarques

Export-PSSession repose sur l'infrastructure de communication à distance Windows PowerShell. Pour utiliser cette applet de commande, l'ordinateur doit être configuré pour l'accès distant. Pour plus d'informations, consultez about_Remote_Requirements.

Vous ne pouvez pas utiliser Export-PSSession pour exporter un fournisseur Windows PowerShell.

Les commandes exportées s'exécutent implicitement dans la session PSSession à partir de laquelle elles ont été exportées. Toutefois, les détails de l'exécution des commandes à distance sont entièrement gérés par Windows PowerShell. Vous pouvez exécuter les commandes exportées comme vous le feriez pour des commandes locales.

Export-Module capture et enregistre les informations relatives à la session PSSession dans le module à exporter. Si la session PSSession à partir de laquelle les commandes ont été exportées est fermée lorsque vous importez le module et qu'il n'existe pas de session PSSession active sur le même ordinateur, les commandes du module tentent de recréer la session PSSession. Si les tentatives de recréation de la session PSSession échouent, les commandes exportées ne s'exécuteront pas.

Les informations sur la session capturées et enregistrées dans le module par Export-Module n'incluent pas les options de session, notamment celles que vous spécifiez dans la variable automatique $PSSessionOption ou à l'aide des paramètres SessionOption de l'applet de commande New-PSSession, Enter-PSSession ou Invoke-Command. Si la session PSSession d'origine est fermée lorsque vous importez le module, le module utilisera une autre session PSSession sur le même ordinateur, si possible. Pour permettre aux commandes importées de s'exécuter dans une session correctement configurée, créez une session PSSession avec les options de votre choix avant d'importer le module.

Pour rechercher les commandes à exporter, Export-PSSession utilise l'applet de commande Invoke-Command pour exécuter une commande Get-Command dans la session PSSession. Pour obtenir et enregistrer les données de mise en forme des commandes, elle utilise les applets de commande Get-FormatData et Export-FormatData. Vous pouvez voir les messages d'erreur de Invoke-Command, Get-Command, Get-FormatData et Export-FormatData lorsque vous exécutez une commande Export-PSSession. De plus, Export-PSSession ne peut pas exporter de commandes d'une session qui n'inclut pas les applets de commande Get-Command, Get-FormatData, Select-Object et Get-Help.

Export-PSSession utilise l'applet de commande Write-Progress pour afficher la progression de la commande. Vous pouvez consulter la barre de progression pendant que la commande s'exécute.

Les commandes exportées présentent les mêmes limitations que les autres commandes distantes, notamment l'impossibilité de démarrer un programme avec une interface utilisateur, telle que le Bloc-notes.

Étant donné que les profils Windows PowerShell ne sont pas exécutés dans PSSessions, les commandes qu'un profil ajoute à une session ne sont pas disponibles pour Export-PSSession. Pour exporter des commandes à partir d'un profil, utilisez une commande Invoke-Command pour exécuter le profil manuellement dans la session PSSession avant d'exporter les commandes.

Le module que Export-PSSession crée peut inclure un fichier de mise en forme, même si la commande n'importe pas de données de mise en forme. Si la commande n'importe pas de données de mise en forme, tous les fichiers de mise en forme créés ne contiendront pas de données de mise en forme.

Exemple 1

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

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

Description
-----------
Les commandes présentées dans cet exemple exportent toutes les commandes d'une session PSSession de l'ordinateur Server01 vers le module Server01 de l'ordinateur local, à l'exception des commandes portant le même nom que les commandes de la session active. Elles exportent également les données de mise en forme des commandes.   

La première commande crée une session PSSession sur l'ordinateur Server01. La deuxième commande exporte les commandes et les données de mise en forme de la session vers le module Server01.






Exemple 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

Description
-----------
Ces commandes exportent les commandes Get et Set d'un composant logiciel enfichable Microsoft Exchange Server installé sur un ordinateur distant vers un module Exchange dans le répertoire $pshome\Modules de l'ordinateur local.

Le placement du module dans le répertoire $pshome\Module le rend accessible à tous les utilisateurs de l'ordinateur.






Exemple 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

Description
-----------
Ces commandes exportent des applets de commande à partir d'une session PSSession d'un ordinateur distant et les enregistrent dans un module sur l'ordinateur local. Les commandes ajoutent ensuite les applets de commande d'un module à la session active afin de permettre leur utilisation.

La première commande crée une session PSSession sur l'ordinateur Server01 et l'enregistre dans la variable $s.

La deuxième commande exporte les applets de commande dont le nom commence par « Test » de la session PSSession de la variable $s vers le module TestCmdlets de l'ordinateur local.

La troisième commande utilise l'applet de commande Remove-PSSession pour supprimer de la session active la session PSSession de la variable $s. Cette commande indique que la session PSSession ne doit pas nécessairement être active pour permettre l'utilisation des commandes importées depuis elle.

La quatrième commande, qui peut être exécutée à tout moment dans n'importe quelle session, utilise l'applet de commande Import-Module pour ajouter les applets de commande du module TestCmdlets à la session active.

La cinquième commande utilise l'applet de commande Get-Help pour obtenir de l'aide sur les applets de commande dont le nom commence par « Test ». Une fois les commandes d'un module ajoutées à la session active, vous pouvez utiliser les applets de commande Get-Help et Get-Command pour en savoir plus sur les commandes importées, comme vous le feriez pour les autres commandes de la session.

La sixième commande utilise l'applet de commande Test-Files, qui a été exportée à partir de l'ordinateur Server01 et ajoutée à la session. 

Bien que ce ne soit pas évident, la commande Test-Files s'exécute réellement dans une session à distance sur l'ordinateur à partir duquel elle a été importée. Windows PowerShell crée une session à partir des informations stockées dans le module.






Exemple 4

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

Description
-----------
Cette commande exporte toutes les commandes et toutes les données de mise en forme de la session PSSession de la variable $s vers la session active. Elle utilise le paramètre AllowClobber pour inclure les commandes portant le même nom que des commandes de la session active.






Exemple 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

Description
-----------
Cet exemple montre comment exécuter les commandes exportées dans une session avec des options spécifiques lorsque la session PSSession à partir de laquelle les commandes ont été exportées est fermée.

Lorsque vous utilisez Export-PSSession, elle enregistre les informations relatives à la session PSSession d'origine dans le module créé. Lorsque vous importez le module, si la session à distance d'origine est fermée, le module utilisera toute session à distance ouverte connectée à l'ordinateur d'origine. 

Si la session active n'inclut pas de session à distance sur l'ordinateur d'origine, les commandes du module rétabliront une session sur cet ordinateur. Toutefois, Export-PSSession n'enregistre pas dans le module les options spécifiques, telles que celles que vous définissez à l'aide du paramètre SessionOption de New-PSSession. 

Par conséquent, si vous souhaitez exécuter les commandes exportées dans une session à distance avec des options spécifiques, vous devez créer une session à distance avec les options de votre choix avant d'importer le module.

La première commande utilise l'applet de commande New-PSSessionOption pour créer un objet PSSessionOption et enregistre cet objet dans la variable $options.

La deuxième commande crée une session PSSession qui inclut les options spécifiées. Elle utilise l'applet de commande New-PSSession pour créer une session PSSession sur l'ordinateur Server01. Elle utilise le paramètre SessionOption pour envoyer l'objet d'option dans $ options. 

La troisième commande utilise l'applet de commande Export-PSSession pour exporter des commandes de la session PSSession de la variable $s vers le module Server01.

La quatrième commande utilise l'applet de commande Remove-PSSession pour supprimer la session PSSession de la variable $s.

La cinquième commande utilise l'applet de commande New-PSSession pour créer une session PSSession connectée à l'ordinateur Server01. Cette session PSSession utilise également les options de session de la variable $options.

La sixième commande utilise l'applet de commande Import-Module pour importer les commandes à partir du module Server01. Les commandes du module s'exécutent dans la session PSSession sur l'ordinateur Server01.






Voir aussi




Table des matières