Import-Clixml
Importe un fichier CLIXML et crée des objets correspondants dans PowerShell.
Syntaxe
Import-Clixml
[-Path] <String[]>
[-IncludeTotalCount]
[-Skip <UInt64>]
[-First <UInt64>]
[<CommonParameters>]
Import-Clixml
-LiteralPath <String[]>
[-IncludeTotalCount]
[-Skip <UInt64>]
[-First <UInt64>]
[<CommonParameters>]
Description
L’applet Import-Clixml
de commande importe des objets qui ont été sérialisés dans un fichier XML CLI (Common Language Infrastructure). Une utilisation précieuse sur Import-Clixml
les ordinateurs Windows consiste à importer des informations d’identification et des chaînes sécurisées qui ont été exportées en tant que code XML sécurisé à l’aide Export-Clixml
de .
L’exemple n° 2 montre comment importer Import-Clixml
un objet d’informations d’identification sécurisé.
Les données CLIXML sont désérialisées dans des objets PowerShell. Toutefois, les objets désérialisés ne sont pas des objets actifs. Il s’agit d’un instantané des objets au moment de la sérialisation. Les objets désérialisés incluent des propriétés, mais aucune méthode.
La propriété TypeNames contient le nom de type d’origine préfixé par Deserialized
.
L’exemple n°3 montre la propriété TypeNames d’un objet désérialisé.
Import-Clixml
utilise la marque d’ordre d’octet (BOM) pour détecter le format d’encodage du fichier. Si le fichier n’a pas de boM, il suppose que l’encodage est UTF8.
Pour plus d’informations sur l’interface CLI, consultez l’indépendance du langage.
Exemples
Exemple 1 : Importer un fichier sérialisé et recréer un objet
Cet exemple utilise l’applet Export-Clixml
de commande pour enregistrer une copie sérialisée des informations de processus retournées par Get-Process
. Import-Clixml
récupère le contenu du fichier sérialisé et recrée un objet stocké dans la $Processes
variable.
Get-Process | Export-Clixml -Path .\pi.xml
$Processes = Import-Clixml -Path .\pi.xml
Exemple 2 : Importer un objet d’informations d’identification sécurisé
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 en texte brut.
$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 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 3 : Inspecter la propriété TypeNames d’un objet désérialisé
Cet exemple montre l’importation d’un objet stocké en tant que données CLIXML. Les données sont désérialisées dans un objet PowerShell. Toutefois, l’objet désérialisé n’est pas un objet actif. Il s’agit d’un instantané des objets au moment de la sérialisation. Les objets désérialisés incluent des propriétés, mais aucune méthode.
$original = [pscustomobject] @{
Timestamp = Get-Date
Label = 'Meeting event'
}
$original | Add-Member -MemberType ScriptMethod -Name GetDisplay -Value {
'{0:yyyy-MM-dd HH:mm} {1}' -f $this.Timestamp, $this.Label
}
$original | Get-Member -MemberType ScriptMethod
TypeName: System.Management.Automation.PSCustomObject
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
Label NoteProperty string Label=Meeting event
Timestamp NoteProperty System.DateTime Timestamp=1/31/2024 2:27:59 PM
GetDisplay ScriptMethod System.Object GetDisplay();
$original | Export-Clixml -Path event.clixml
$deserialized = Import-CliXml -Path event.clixml
$deserialized | Get-Member
TypeName: Deserialized.System.Management.Automation.PSCustomObject
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
Label NoteProperty string Label=Meeting event
Timestamp NoteProperty System.DateTime Timestamp=1/31/2024 2:27:59 PM
Notez que le type de l’objet dans $original
est System.Management.Automation.PSCustomObject, mais que le type de l’objet dans $deserialized
est Deserialized.System.Management.Automation.PSCustomObject. En outre, la GetDisplay()
méthode est manquante dans l’objet désérialisé.
Paramètres
-First
Obtient uniquement le nombre d’objets spécifié. Entrez le nombre d’objets à obtenir.
Type: | UInt64 |
Position: | Named |
Valeur par défaut: | False |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-IncludeTotalCount
Signale le nombre total d’objets dans le jeu de données suivi des objets sélectionnés. Si l’applet de commande ne peut pas déterminer le nombre total, elle affiche le nombre total inconnu. L’entier a une propriété Precisiony qui indique la fiabilité de la valeur de nombre total. La valeur de la précision varie de 0.0
l’endroit 0.0
où 1.0
signifie que l’applet de commande n’a pas pu compter les objets, 1.0
signifie que le nombre est exact et qu’une valeur entre 0.0
et 1.0
indique une estimation de plus en plus fiable.
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 |
-LiteralPath
Spécifie le chemin d’accès aux fichiers XML. 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: | True |
Accepter les caractères génériques: | False |
-Path
Spécifie le chemin d’accès aux fichiers XML.
Type: | String[] |
Position: | 0 |
Valeur par défaut: | None |
Obligatoire: | True |
Accepter l'entrée de pipeline: | True |
Accepter les caractères génériques: | False |
-Skip
Ignore le nombre spécifié d’objets, puis obtient les objets restants. Entrez le nombre d’objets à ignorer.
Type: | UInt64 |
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 diriger une chaîne contenant un chemin d’accès à cette applet de commande.
Sorties
Cette applet de commande retourne des objets désérialisés à partir des fichiers XML stockés.
Notes
Quand vous spécifiez plusieurs valeurs pour un paramètre, séparez-les par des virgules. Par exemple : <parameter-name> <value1>, <value2>
.