Partager via


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-Clixmlde . 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-Clixmlet enregistrez-le dans le chemin d’accès, $Credxmlpathque 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.01.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

String

Vous pouvez diriger une chaîne contenant un chemin d’accès à cette applet de commande.

Sorties

PSObject

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>.