Import-Clixml
Importiert eine CLIXML-Datei und erstellt entsprechende Objekte in PowerShell.
Syntax
Import-Clixml
[-Path] <String[]>
[-IncludeTotalCount]
[-Skip <UInt64>]
[-First <UInt64>]
[<CommonParameters>]
Import-Clixml
-LiteralPath <String[]>
[-IncludeTotalCount]
[-Skip <UInt64>]
[-First <UInt64>]
[<CommonParameters>]
Beschreibung
Das Import-Clixml
Cmdlet importiert Objekte, die in eine CLI-XML-Datei (Common Language Infrastructure) serialisiert wurden. Eine wertvolle Verwendung von Import-Clixml
auf Windows-Computern besteht darin, Anmeldeinformationen und sichere Zeichenfolgen zu importieren, die als sicheres XML mit Export-Clixml
exportiert wurden.
Beispiel #2 zeigt, wie sie verwenden, Import-Clixml
um ein Sicheres Anmeldeinformationsobjekt zu importieren.
Die CLIXML-Daten werden wieder in PowerShell-Objekte deserialisiert. Die deserialisierten Objekte sind jedoch keine Liveobjekte. Sie sind ein Momentaufnahme der Objekte zum Zeitpunkt der Serialisierung. Die deserialisierten Objekte enthalten Eigenschaften, aber keine Methoden.
Die TypeNames-Eigenschaft enthält den ursprünglichen Typnamen mit Deserialized
dem Präfix .
Beispiel 3 zeigt die TypeNames-Eigenschaft eines deserialisierten Objekts.
Import-Clixml
verwendet die byte-order-mark (BOM), um das Codierungsformat der Datei zu erkennen. Wenn die Datei keine BoM hat, wird davon ausgegangen, dass die Codierung UTF8 ist.
Weitere Informationen zur CLI finden Sie unter Sprachenunabhängigkeit.
Beispiele
Beispiel 1: Importieren einer serialisierten Datei und Erstellen eines Objekts
In diesem Beispiel wird das Export-Clixml
Cmdlet verwendet, um eine serialisierte Kopie der von Get-Process
zurückgegebenen Prozessinformationen zu speichern. Import-Clixml
ruft den Inhalt der serialisierten Datei ab und erstellt ein Objekt neu, das in der $Processes
Variablen gespeichert ist.
Get-Process | Export-Clixml -Path .\pi.xml
$Processes = Import-Clixml -Path .\pi.xml
Beispiel 2: Importieren eines Objekts für sichere Anmeldeinformationen
In diesem Beispiel können Sie das Cmdlet ausführen, indem Sie die Anmeldeinformationen in der $Credential
Variablen gespeichert haben, indem Sie das Get-Credential
Cmdlet ausführen Export-Clixml
, um die Anmeldeinformationen auf dem Datenträger zu speichern.
Wichtig
Export-Clixml
exportiert nur verschlüsselte Anmeldeinformationen unter Windows. Unter Nicht-Windows-Betriebssystemen wie macOS und Linux werden Anmeldeinformationen als Nur-Text exportiert.
$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
Das Export-Clixml
Cmdlet verschlüsselt Anmeldeinformationsobjekte mithilfe der Windows Data Protection-API. Die Verschlüsselung stellt sicher, dass nur Ihr Benutzerkonto den Inhalt des Anmeldeinformationsobjekts entschlüsseln kann. Die exportierte CLIXML
Datei kann nicht auf einem anderen Computer oder von einem anderen Benutzer verwendet werden.
Im Beispiel wird die Datei, in der die Anmeldeinformationen gespeichert sind, durch TestScript.ps1.credential
dargestellt. Ersetzen Sie TestScript durch den Namen des Skripts, mit dem Sie die Anmeldeinformationen laden.
Sie senden das Anmeldeinformationsobjekt in der Pipeline an Export-Clixml
und speichern es in dem Pfad, $Credxmlpath
den Sie im ersten Befehl angegeben haben.
Führen Sie die letzten beiden Befehle aus, um die Anmeldeinformationen automatisch in Ihr Skript zu importieren. Führen Sie aus Import-Clixml
, um das geschützte Anmeldeinformationsobjekt in Ihr Skript zu importieren. Durch diesen Import wird das Risiko beseitigt, dass Nur-Text-Kennwörter in Ihrem Skript verfügbar sind.
Beispiel 3: Überprüfen der TypeNames-Eigenschaft eines deserialisierten Objekts
Dieses Beispiel zeigt das Importieren eines Objekts, das als CLIXML-Daten gespeichert ist. Die Daten werden wieder in ein PowerShell-Objekt deserialisiert. Das deserialisierte Objekt ist jedoch kein Liveobjekt. Sie sind ein Momentaufnahme der Objekte zum Zeitpunkt der Serialisierung. Die deserialisierten Objekte enthalten Eigenschaften, aber keine Methoden.
$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
Beachten Sie, dass der Typ des Objekts in $original
System.Management.Automation.PSCustomObject ist, der Typ des Objekts in $deserialized
jedoch Deserialized.System.Management.Automation.PSCustomObject ist. Außerdem fehlt die GetDisplay()
-Methode im deserialisierten Objekt.
Parameter
-First
Ruft nur die angegebene Anzahl von Objekten ab. Geben Sie die Anzahl der abzurufenden Objekte an.
Type: | UInt64 |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-IncludeTotalCount
Gibt die Gesamtzahl der Objekte im Dataset gefolgt von den ausgewählten Objekten an. Wenn das Cmdlet die Gesamtanzahl nicht ermitteln kann, wird die Gesamtzahl unbekannt angezeigt. Die ganze Zahl verfügt über eine Accuracy-Eigenschaft , die die Zuverlässigkeit des Gesamtanzahlswerts angibt. Der Wert von Genauigkeit reicht von 0.0
bis wo 1.0
0.0
bedeutet, dass das Cmdlet die Objekte nicht zählen konnte, bedeutet, 1.0
dass die Anzahl genau ist und ein Wert zwischen 0.0
und 1.0
eine immer zuverlässigere Schätzung angibt.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-LiteralPath
Gibt den Pfad zu den XML-Dateien an. Im Gegensatz zu Path wird der Wert des LiteralPath-Parameters genau so verwendet, wie er eingegeben wird. Es werden keine Zeichen als Platzhalter interpretiert. Wenn der Pfad Escapezeichen enthält, müssen Sie ihn in einfache Anführungszeichen einschließen. Einzelne Anführungszeichen weisen PowerShell an, keine Zeichen als Escapesequenzen zu interpretieren.
Type: | String[] |
Aliases: | PSPath, LP |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Path
Gibt den Pfad zu den XML-Dateien an.
Type: | String[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Skip
Ignoriert die angegebene Anzahl an Objekten und ruft anschließend die übrigen Objekte ab. Geben Sie die Anzahl der zu überspringenden Objekte an.
Type: | UInt64 |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Eingaben
Sie können eine Zeichenfolge mit einem Pfad an dieses Cmdlet weiterleiten.
Ausgaben
Dieses Cmdlet gibt Objekte zurück, die aus den gespeicherten XML-Dateien deserialisiert wurden.
Hinweise
Wenn Sie für einen Parameter mehrere Werte angeben, verwenden Sie Kommas zur Trennung der Werte. Beispiel: <parameter-name> <value1>, <value2>
.