Partager via


Export-PSSession

Exporte des commandes à partir d’une autre session et les enregistre dans un module 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

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

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

Pour exporter des commandes, utilisez l’applet New-PSSession de commande pour créer une session PSSession avec les commandes que vous souhaitez exporter. Utilisez ensuite l’applet Export-PSSession de commande pour exporter les commandes.

Pour éviter les conflits de noms de commandes, la valeur par défaut Export-PSSession consiste à exporter toutes les commandes, à l’exception des commandes qui existent dans la session active. Vous pouvez utiliser le paramètre CommandName pour spécifier les commandes à exporter.

L’applet Export-PSSession de commande utilise la fonctionnalité de communication à distance implicite de PowerShell. Quand 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.

Exemples

Exemple 1 : Exporter des commandes à partir d’une session PSSession

Cet exemple crée une session PSSession à partir de l’ordinateur local vers l’ordinateur Server01. Toutes les commandes, sauf celles qui existent dans la session active, sont exportées vers le module nommé Server01 sur l’ordinateur local. L’exportation inclut les données de mise en forme des commandes.

$S = New-PSSession -ComputerName Server01
Export-PSSession -Session $S -OutputModule Server01

La New-PSSession commande crée une session PSSession sur l’ordinateur Server01. La session PSSession est stockée dans la $S variable. La Export-PSSession commande exporte les commandes et les données de mise en forme de la $S variable dans le module Server01.

Exemple 2 : Exporter les commandes Get et Set

Cet exemple exporte toutes les commandes et Set les Get commandes d’un serveur.

$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

Ces commandes exportent les Get commandes et Set les commandes d’un composant logiciel enfichable Microsoft Exchange Server sur un ordinateur distant vers un module Exchange dans le $PSHOME\Modules répertoire de l’ordinateur local. Le fait de placer le module dans le $PSHOME\Modules répertoire le rend accessible à tous les utilisateurs de l’ordinateur.

Exemple 3 : Exporter des commandes à partir d’un ordinateur distant

Cet exemple exporte des applets de commande à partir d’une session PSSession sur un ordinateur distant et les enregistre dans un module sur l’ordinateur local. Les applets de commande du module sont ajoutées à la session active afin qu’elles puissent être utilisées.

$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

La New-PSSession commande crée une session PSSession sur l’ordinateur Server01 et l’enregistre dans la $S variable. La Export-PSSession commande exporte les applets de commande dont les noms commencent par Test à partir de PSSession vers $S le module TestCmdlets sur l’ordinateur local.

L’applet Remove-PSSession de commande supprime le PSSession dans $S la session active. Cette commande indique que la session PSSession n’a pas besoin d’être active pour utiliser les commandes importées à partir de la session. L’applet Import-Module de commande ajoute les applets de commande dans le module TestCmdlets à la session active. La commande peut être exécutée dans n’importe quelle session à tout moment.

L’applet de commande obtient de l’aide Get-Help pour les applets de commande dont les noms commencent par Test. Une fois les commandes d’un module ajoutées à la session active, vous pouvez utiliser les Get-Help applets de commande et Get-Command les applets de commande pour en savoir plus sur les commandes importées. L’applet Test-Files de commande a été exportée à partir de l’ordinateur Server01 et ajoutée à la session. L’applet Test-Files de commande s’exécute dans une session distante sur l’ordinateur à partir duquel la commande a été importée. PowerShell crée une session à partir d’informations stockées dans le module TestCmdlets.

Exemple 4 : Exporter et clobber des commandes dans la session active

Cet exemple exporte des commandes stockées dans une variable dans la session active.

Export-PSSession -Session $S -AllowClobber -OutputModule AllCommands

Cette Export-PSSession commande exporte toutes les commandes et toutes les données de mise en forme de la session PSSession dans la $S variable dans la session active. Le paramètre AllowClobber inclut des commandes portant le même nom que les commandes de la session active.

Exemple 5 : Exporter des commandes à partir d’une session PSSession fermée

Cet exemple montre comment exécuter les commandes exportées avec des options spéciales lorsque la session PSSession qui a créé les commandes exportées est fermée.

Si la session distante d’origine est fermée lorsqu’un module est importé, le module utilise toute session distante ouverte qui se connecte à l’ordinateur d’origine. S’il n’existe aucune session active sur l’ordinateur d’origine, le module rétablit une session.

Pour exécuter des commandes exportées avec des options spéciales dans une session à distance, vous devez créer une session distante avec ces options avant d’importer le module. Utiliser l’applet de New-PSSession commande avec le paramètre 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

L’applet New-PSSessionOption de commande crée un objet PSSessionOption et enregistre l’objet dans la $Options variable. La New-PSSession commande crée une session PSSession sur l’ordinateur Server01. Le paramètre SessionOption utilise l’objet stocké dans $Options. La session est stockée dans la $S variable.

L’applet Export-PSSession de commande exporte les commandes de la session PSSession vers $S le module Server01. L’applet Remove-PSSession de commande supprime la session PSSession dans la $S variable.

L’applet New-PSSession de commande crée une session PSSession qui se connecte à l’ordinateur Server01. Le paramètre SessionOption utilise l’objet stocké dans $Options. L’applet Import-Module de commande importe les commandes à partir du module Server01. Les commandes du module sont exécutées dans la session PSSession sur l’ordinateur Server01.

Paramètres

-AllowClobber

Exporte les commandes spécifiées, même si elles ont les mêmes noms que les commandes dans la session active.

Si vous exportez une commande portant le même nom qu’une commande dans la session active, la commande exportée masque ou remplace les commandes d’origine. Pour plus d’informations, consultez about_Command_Precedence.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ArgumentList

Exporte la variante de la commande obtenue suite à l'utilisation des arguments spécifiés (valeurs de paramètre).

Par exemple, pour exporter la variante de la Get-Item commande dans le lecteur de certificat (Cert :) dans la session PSSession dans $S, tapez 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

Spécifie le certificat client utilisé pour signer les fichiers de format (*). Fichiers de module Format.ps1xml) ou de script (.psm1) dans le module qui Export-PSSession crée. Entrez une variable qui contient un certificat, ou bien une commande ou une expression qui obtient le certificat.

Pour rechercher un certificat, utilisez l’applet Get-PfxCertificate de commande ou utilisez l’applet Get-ChildItem de commande dans le lecteur Certificat (Cert :). Si le certificat n'est pas valide ou n'a pas une autorité suffisante, la commande échoue.

Type:X509Certificate2
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-CommandName

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

Par défaut, exporte toutes les commandes à partir de la session PSSession, Export-PSSession à l’exception des commandes qui ont les mêmes noms que les commandes de la session active. Cela empêche les commandes d’être masquées ou remplacées par des commandes dans la session active. Pour exporter toutes les commandes, même celles qui masquent ou remplacent 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, sauf si vous utilisez le paramètre FormatTypeName . De même, si vous utilisez le paramètre FormatTypeName , aucune commande n’est exportée, sauf si vous utilisez le paramètre 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

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

Les valeurs acceptables pour ce paramètre sont les suivantes :

  • Alias: tous les alias PowerShell dans la session active.
  • All: tous les types de commandes. C’est l’équivalent de Get-Command -Name *.
  • Application: tous les fichiers autres que les fichiers PowerShell dans les chemins d’accès répertoriés dans la variable d’environnement Path ($env:path), y compris les fichiers .txt, .exe et .dll.
  • Cmdlet: applets de commande dans la session active. L’applet de commande est la valeur par défaut.
  • Configuration: configuration PowerShell. Pour plus d’informations, consultez about_Session_Configurations.
  • ExternalScript: tous les fichiers .ps1 dans les chemins répertoriés dans la variable d’environnement Path ($env:path).
  • Filter et Function: Toutes les fonctions PowerShell.
  • Script Blocs de script dans la session active.
  • Workflow Flux de travail PowerShell. Pour plus d’informations, consultez about_Workflows.

Ces valeurs sont définies comme une énumération basée sur des indicateurs. Vous pouvez combiner plusieurs valeurs pour définir plusieurs indicateurs à l’aide de ce paramètre. Les valeurs peuvent être passées au paramètre CommandType en tant que tableau de valeurs ou sous forme de chaîne séparées par des virgules de ces valeurs. L’applet de commande combine les valeurs à l’aide d’une opération binary-OR. La transmission de valeurs en tant que tableau est l’option la plus simple et vous permet également d’utiliser la saisie semi-automatique sous forme de tabulation sur les valeurs.

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

Spécifie le type de codage du fichier cible. La valeur par défaut est utf8NoBOM.

Les valeurs acceptables pour ce paramètre sont les suivantes :

  • ascii: utilise l’encodage pour le jeu de caractères ASCII (7 bits).
  • ansi: utilise l’encodage pour la page de codes ANSI de la culture actuelle. Cette option a été ajoutée dans PowerShell 7.4.
  • bigendianunicode: encode au format UTF-16 à l’aide de l’ordre d’octet big-endian.
  • bigendianutf32: encode au format UTF-32 à l’aide de l’ordre d’octet big-endian.
  • oem: utilise l’encodage par défaut pour les programmes MS-DOS et console.
  • unicode: encode au format UTF-16 à l’aide de l’ordre d’octet little-endian.
  • utf7: encode au format UTF-7.
  • utf8: encode au format UTF-8.
  • utf8BOM: encode au format UTF-8 avec marque d’ordre d’octet (BOM)
  • utf8NoBOM: encode au format UTF-8 sans marque d’ordre d’octet (BOM)
  • utf32: encode au format UTF-32.

À compter de PowerShell 6.2, le paramètre d’encodage autorise également les ID numériques des pages de codes inscrites (par -Encoding 1251exemple) ou des noms de chaînes de pages de codes inscrites (par exemple -Encoding "windows-1251"). Pour plus d’informations, consultez la documentation .NET pour Encoding.CodePage.

À compter de PowerShell 7.4, vous pouvez utiliser la Ansi valeur du paramètre Encodage pour passer l’ID numérique de la page de codes ANSI de la culture actuelle sans avoir à le spécifier manuellement.

Remarque

UTF-7* n’est plus recommandé à utiliser. À partir de PowerShell 7.1, un avertissement est écrit si vous spécifiez utf7 le paramètre Encodage .

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

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

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-FormatTypeName

Exportations les instructions de mise en forme uniquement pour les types Microsoft .NET Framework spécifiés. Entrez les noms des types. Par défaut, Export-PSSession exporte les instructions de mise en forme pour tous les types .NET Framework qui ne se trouvent 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 Get-FormatData commande dans la session à partir de laquelle les commandes sont importées. Pour obtenir toutes les données de mise en forme dans la session à distance, tapez *.

Si vous utilisez le paramètre FormatTypeName , aucune commande n’est exportée, sauf si vous utilisez le paramètre CommandName .

Si vous utilisez le paramètre CommandName , les fichiers de mise en forme des commandes ne sont pas exportés, sauf si vous utilisez le paramètre FormatTypeName .

Type:String[]
Position:3
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-FullyQualifiedModule

La valeur peut être un nom de module, une spécification complète du module ou un chemin d’accès à un fichier de module.

Lorsque la valeur est un chemin d’accès, le chemin d’accès peut être qualifié ou relatif complet. Un chemin relatif est résolu par rapport au script qui contient l’instruction using.

Lorsque la valeur est un nom ou une spécification de module, PowerShell recherche PSModulePath pour le module spécifié.

Une spécification de module est une table de hachage qui a les clés suivantes.

  • ModuleName - Obligatoire Spécifie le nom du module.
  • GUID - Facultatif Spécifie le GUID du module.
  • Il est également nécessaire de spécifier au moins l’une des trois clés ci-dessous.
    • ModuleVersion - Spécifie une version minimale acceptable du module.
    • MaximumVersion - Spécifie la version maximale acceptable du module.
    • RequiredVersion - Spécifie une version exacte et requise du module. Cela ne peut pas être utilisé avec les autres clés de version.

Vous ne pouvez pas spécifier le paramètre FullyQualifiedModule dans la même commande qu’un paramètre module . les deux paramètres s’excluent mutuellement.

Type:ModuleSpecification[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Module

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

Pour plus d’informations, consultez Import-Module et 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

Spécifie un chemin et un nom facultatifs 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 Export-PSSession existe déjà, la commande échoue. Pour remplacer les fichiers existants, utilisez le paramètre 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

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

Type:PSSession
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

Entrées

None

Vous ne pouvez pas diriger les objets vers cette applet de commande.

Sorties

FileInfo

Cette applet de commande retourne une liste de fichiers qui composent le module qu’il a créé.

Notes

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

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

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

Export-ModuleMember capture et enregistre des informations sur psSession dans le module qu’il exporte. 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’y a 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 psSession échouent, les commandes exportées ne s’exécutent pas.

Les informations de session qui Export-ModuleMember capturent et enregistrent dans le module n’incluent pas d’options de session, telles que celles que vous spécifiez dans la $PSSessionOption variable de préférence ou à l’aide du paramètre SessionOption du , Enter-PSSessionou Invoke-Command des applets de New-PSSessioncommande. Si la session PSSession d'origine est fermée quand vous importez le module, ce dernier utilisera une autre session PSSession sur le même ordinateur, si celle-ci est disponible. Pour permettre aux commandes importées de s'exécuter dans une session correctement configurée, créez une session PSSession avec les options que vous souhaitez avant d'importer le module.

Pour rechercher les commandes à exporter, Export-PSSession utilise l’applet Invoke-Command de commande pour exécuter une Get-Command commande dans la session PSSession. Pour obtenir et enregistrer des données de mise en forme pour les commandes, elle utilise les applets de commande et Export-FormatData les Get-FormatData applets de commande. Vous pouvez voir des messages d’erreur à partir de Invoke-Command, Get-Commandet Get-FormatDataExport-FormatData quand vous exécutez une Export-PSSession commande. En outre, Export-PSSession ne peut pas exporter des commandes à partir d’une session qui n’inclut pas les applets de commande , Get-FormatDataet Select-ObjectGet-Help les Get-Commandapplets de commande.

Export-PSSession utilise l’applet Write-Progress de commande pour afficher la progression de la commande. Vous pouvez voir la barre de progression pendant l'exécution de la commande.

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

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

Le module qui 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, les fichiers de mise en forme éventuellement créés ne contiennent pas de données de mise en forme.