Partager via


Export-PSSession

Exporte les commandes 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 les applets de commande, les fonctions, les 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 de Import-Module 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 contenant 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 commande, la valeur par défaut de Export-PSSession est d’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. 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.

Exemples

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

Cet exemple crée une session PSSession de l’ordinateur local vers l’ordinateur Server01. Toutes les commandes, à l’exception de 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 $S commandes et les données de mise en forme de la variable dans le module Server01.

Exemple 2 : Exporter les commandes Get et Set

Cet exemple exporte toutes les Get commandes et Set à partir 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 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 le nom commence par Test de la session PSSession dans $S vers le module TestCmdlets sur l’ordinateur local.

L’applet Remove-PSSession de commande supprime la session PSSession dans $S de la session active. Cette commande montre 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 du module TestCmdlets à la session active. La commande peut être exécutée dans n’importe quelle session à tout moment.

L’applet Get-Help de commande obtient de l’aide pour 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 Get-Help applets de commande et Get-Command 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 à distance sur l’ordinateur à partir duquel la commande a été importée. PowerShell crée une session à partir des informations stockées dans le module TestCmdlets.

Exemple 4 : Exporter et clober 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 les mêmes noms 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 à distance d’origine est fermée lors de l’importation d’un module, le module utilise toute session à distance 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 à distance 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 psSession dans $S vers 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 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 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 (*. Format.ps1xml) ou fichiers de module 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 de Get-PfxCertificate commande ou utilisez l’applet Get-ChildItem de commande dans le lecteur Certificate (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 de la session PSSession, Export-PSSession à l’exception des commandes qui ont le même nom 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 de la session active.
  • All: tous les types de commandes. Il s’agit de 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 de 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 d’accès 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 Un flux de travail PowerShell. Pour plus d’informations, consultez about_Workflows.

Ces valeurs sont définies comme une énumération basée sur un indicateur. 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 sous la forme d’un tableau de valeurs ou d’une chaîne séparée 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 par 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).
  • bigendianunicode: encode au format UTF-16 à l’aide de l’ordre d’octets big-endian.
  • bigendianutf32: encode au format UTF-32 à l’aide de l’ordre d’octets 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 une 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 Encoding autorise également les ID numériques des pages de codes inscrites (comme -Encoding 1251) ou les noms de chaîne de pages de codes inscrites (comme -Encoding "windows-1251"). Pour plus d’informations, consultez la documentation .NET pour Encoding.CodePage.

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 des 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 de module complète 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 complet ou relatif. Un chemin d’accès 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 le module spécifié dans PSModulePath .

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

  • ModuleName - Obligatoire Spécifie le nom du module.
  • GUID - Optionnel Spécifie le GUID du module.
  • Il est également obligatoire 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 d’accès 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 de module ou l’un des fichiers créés Export-PSSession existe déjà, la commande échoue. Pour remplacer des 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, tel qu’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’elle 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 la session PSSession dans le module qu’elle 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’existe aucune session PSSession active sur le même ordinateur, les commandes du module tentent de recréer la session PSSession. Si les tentatives de recréer la session PSSession échouent, les commandes exportées ne s’exécutent pas.

Les informations de session qui capturent Export-ModuleMember 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 New-PSSessiondu paramètre SessionOption des applets de commande , Enter-PSSessionou Invoke-Command . 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 les données de mise en forme des commandes, il utilise les Get-FormatData applets de commande et Export-FormatData . Vous pouvez voir des messages d’erreur de Invoke-Command, Get-Command, Get-FormatDataet Export-FormatData lorsque 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 Get-Commandapplets de commande , Get-FormatData, Select-Objectet Get-Help .

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 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 Invoke-Command commande pour exécuter manuellement le profil dans psSession avant d’exporter les 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.