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 deGet-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
etFunction
: 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 1251
exemple) 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
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-PSSession
ou Invoke-Command
des applets de New-PSSession
commande. 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-Command
et Get-FormatData
Export-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-FormatData
et Select-Object
Get-Help
les Get-Command
applets 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.