Export-Clixml
Crée une représentation XML d'un ou plusieurs objets et la stocke dans un fichier.
Syntaxe
Export-Clixml
[-Depth <Int32>]
[-Path] <String>
-InputObject <PSObject>
[-Force]
[-NoClobber]
[-Encoding <Encoding>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Export-Clixml
[-Depth <Int32>]
-LiteralPath <String>
-InputObject <PSObject>
[-Force]
[-NoClobber]
[-Encoding <Encoding>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Description
L’applet Export-Clixml
de commande sérialise un objet dans une représentation XML basée sur l’interface CLI (Common Language Infrastructure) la stocke dans un fichier. Vous pouvez ensuite utiliser l’applet Import-Clixml
de commande pour recréer l’objet enregistré en fonction du contenu de ce fichier. Pour plus d’informations sur l’interface CLI, consultez l’indépendance du langage.
Cette applet de commande est similaire à ConvertTo-Xml
, sauf que Export-Clixml
stocke le code XML résultant dans un fichier. ConvertTo-XML
retourne le code XML. Vous pouvez donc continuer à le traiter dans PowerShell.
Une utilisation précieuse sur Export-Clixml
les ordinateurs Windows consiste à exporter des informations d’identification et des chaînes sécurisées en toute sécurité en tant que XML. Pour obtenir un exemple, consultez l’exemple 3.
Exemples
Exemple 1 : Exporter une chaîne vers un fichier XML
Cet exemple crée un fichier XML qui stocke dans le répertoire actif, une représentation de la chaîne : il s’agit d’un test.
"This is a test" | Export-Clixml -Path .\sample.xml
La chaîne This is a test
est envoyée vers le bas du pipeline. Export-Clixml
utilise le paramètre Path pour créer un fichier XML nommé sample.xml
dans le répertoire actif.
Exemple 2 : Exporter un objet vers un fichier XML
Cet exemple montre comment exporter un objet vers un fichier XML, puis créer un objet en important le contenu XML du fichier.
Get-Acl C:\test.txt | Export-Clixml -Path .\FileACL.xml
$fileacl = Import-Clixml -Path .\FileACL.xml
L’applet Get-Acl
de commande obtient le descripteur de sécurité du Test.txt
fichier. Il envoie l’objet vers le bas du pipeline pour transmettre le descripteur de sécurité à Export-Clixml
. La représentation XML de l’objet est stockée dans un fichier nommé FileACL.xml
.
L’applet Import-Clixml
de commande crée un objet à partir du code XML dans le FileACL.xml
fichier. Ensuite, il enregistre l’objet dans la $fileacl
variable.
Exemple 3 : Chiffrer un objet d’informations d’identification exporté sur Windows
Dans cet exemple, étant donné les informations d’identification que vous avez stockées dans la $Credential
variable en exécutant l’applet Get-Credential
de commande, vous pouvez exécuter l’applet Export-Clixml
de commande pour enregistrer les informations d’identification sur le disque.
Important
Export-Clixml
exporte uniquement les informations d’identification chiffrées sur Windows. Sur les systèmes d’exploitation non Windows tels que macOS et Linux, les informations d’identification sont exportées sous forme de texte brut stocké sous forme de tableau de caractères Unicode. Cela fournit une certaine obfuscation, mais ne fournit pas de chiffrement.
$Credxmlpath = Join-Path (Split-Path $Profile) TestScript.ps1.credential
$Credential | Export-Clixml $Credxmlpath
$Credxmlpath = Join-Path (Split-Path $Profile) TestScript.ps1.credential
$Credential = Import-Clixml $Credxmlpath
L’applet Export-Clixml
de commande chiffre les objets d’informations d’identification à l’aide de l’API de protection des données Windows. Le chiffrement garantit que seul votre compte d’utilisateur sur cet ordinateur peut déchiffrer le contenu de l’objet d’informations d’identification.
Le fichier exporté CLIXML
ne peut pas être utilisé sur un autre ordinateur ou par un autre utilisateur.
Dans l’exemple, le fichier dans lequel les informations d’identification sont stockées est représenté par TestScript.ps1.credential
. Remplacez TestScript par le nom du script par lequel vous chargez les informations d’identification.
Vous envoyez l’objet d’informations d’identification vers le pipeline Export-Clixml
et enregistrez-le dans le chemin d’accès, $Credxmlpath
que vous avez spécifié dans la première commande.
Pour importer automatiquement les informations d’identification dans votre script, exécutez les deux commandes finales. Exécutez Import-Clixml
pour importer l’objet d’informations d’identification sécurisées dans votre script. Cette importation élimine le risque d’exposer des mots de passe en texte brut dans votre script.
Exemple 4 : Exportation d’un objet d’informations d’identification sur Linux ou macOS
Dans cet exemple, nous créons un PSCredential dans la variable à l’aide $Credential
de l’applet de Get-Credential
commande. Ensuite, nous utilisons Export-Clixml
pour enregistrer les informations d’identification sur le disque.
Important
Export-Clixml
exporte uniquement les informations d’identification chiffrées sur Windows. Sur les systèmes d’exploitation non Windows tels que macOS et Linux, les informations d’identification sont exportées sous forme de texte brut stocké sous forme de tableau de caractères Unicode. Cela fournit une certaine obfuscation, mais ne fournit pas de chiffrement.
PS> $Credential = Get-Credential
PowerShell credential request
Enter your credentials.
User: User1
Password for user User1: ********
PS> $Credential | Export-Clixml ./cred2.xml
PS> Get-Content ./cred2.xml
...
<Props>
<S N="UserName">User1</S>
<SS N="Password">700061007300730077006f0072006400</SS>
</Props>
...
PS> 'password' | Format-Hex -Encoding unicode
Label: String (System.String) <52D60C91>
Offset Bytes Ascii
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
------ ----------------------------------------------- -----
0000000000000000 70 00 61 00 73 00 73 00 77 00 6F 00 72 00 64 00 p a s s w o r d
La sortie de Get-Content
cet exemple a été tronquer pour se concentrer sur les informations d’identification dans le fichier XML. Notez que la valeur de texte brut du mot de passe est stockée dans le fichier XML sous la forme d’un tableau de caractères Unicode comme prouvé par Format-Hex
. Par conséquent, la valeur est encodée, mais pas chiffrée.
Paramètres
-Confirm
Vous demande une confirmation avant d’exécuter l’applet de commande.
Type: | SwitchParameter |
Alias: | cf |
Position: | Named |
Valeur par défaut: | False |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-Depth
Spécifie le nombre de niveaux d'objets contenus inclus dans la représentation XML. La valeur par défaut est 2
.
La valeur par défaut peut être substituée pour le type d’objet dans les Types.ps1xml
fichiers. Pour plus d’informations, consultez about_Types.ps1xml.
Type: | Int32 |
Position: | Named |
Valeur par défaut: | 2 |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | 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 la version 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 |
Valeurs acceptées: | ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 |
Position: | Named |
Valeur par défaut: | UTF8NoBOM |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-Force
Force l’exécution de la commande sans demander la confirmation de l’utilisateur.
Indique à l'applet de commande d'effacer l'attribut de lecture seule du fichier de sortie, si nécessaire. L'applet de commande tente de réinitialiser l'attribut de lecture seule à la fin de l'exécution de la commande.
Type: | SwitchParameter |
Position: | Named |
Valeur par défaut: | False |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-InputObject
Spécifie l'objet à convertir. Entrez une variable contenant les objets, ou tapez une commande ou une expression qui obtient ces objets. Vous pouvez également diriger des objets vers Export-Clixml
.
Type: | PSObject |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | True |
Accepter l'entrée de pipeline: | True |
Accepter les caractères génériques: | False |
-LiteralPath
Spécifie le chemin d'accès du fichier où sera stockée la représentation XML de l'objet. Contrairement à Path, la valeur du paramètre LiteralPath est utilisée exactement comme elle est typée. Aucun caractère n’est interprété en tant que caractère générique. Si le chemin d’accès inclut des caractères d’échappement, mettez-le entre des guillemets simples. Les guillemets simples indiquent à PowerShell de ne pas interpréter de caractères comme séquences d’échappement.
Type: | String |
Alias: | PSPath, LP |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | True |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-NoClobber
Indique que l’applet de commande ne remplace pas le contenu d’un fichier existant. Par défaut, si un fichier existe dans le chemin d’accès spécifié, Export-Clixml
remplace le fichier sans avertissement.
Type: | SwitchParameter |
Alias: | NoOverwrite |
Position: | Named |
Valeur par défaut: | False |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-Path
Spécifie le chemin d'accès du fichier où sera stockée la représentation XML de l'objet.
Type: | String |
Position: | 0 |
Valeur par défaut: | None |
Obligatoire: | True |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-WhatIf
Montre ce qui se passe en cas d’exécution de l’applet de commande. L’applet de commande n’est pas exécutée.
Type: | SwitchParameter |
Alias: | wi |
Position: | Named |
Valeur par défaut: | False |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
Entrées
Vous pouvez pipeliner n’importe quel objet vers cette applet de commande.
Sorties
Cette applet de commande retourne un objet FileInfo représentant le fichier créé avec les données stockées.