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 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 d’accès 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 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 en tant que tableau de valeurs ou en tant que 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 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’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’octets 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 Encodage autorise également les ID numériques des pages de code inscrites (comme -Encoding 1251
) ou les noms de chaîne des pages de code 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 distante, 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
Spécifie les modules avec des noms spécifiés sous la forme d’objets ModuleSpecification . Consultez la section Remarques du constructeur ModuleSpecification (Hashtable).
Par exemple, le paramètre FullyQualifiedModule accepte un nom de module spécifié dans l’un des formats suivants :
@{ModuleName = "modulename"; ModuleVersion = "version_number"}
@{ModuleName = "modulename"; ModuleVersion = "version_number"; Guid = "GUID"}
ModuleNameet ModuleVersion sont obligatoires, mais Guid est facultatif. 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 dans les 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 Export-PSSession
.
Sorties
Export-PSSession
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 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-PSSession
du paramètre SessionOption des applets de commande , Enter-PSSession
ou 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-FormatData
et 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-Command
applets de commande , Get-FormatData
, Select-Object
et 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.