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 cmdlet Import-Clixml
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 mit Export-Clixml
als sicheres XML exportiert wurden.
Beispiel Nr. 2 zeigt, wie sie Import-Clixml
zum Importieren eines sicheren Anmeldeinformationsobjekts verwenden.
Die CLIXML-Daten werden wieder in PowerShell-Objekte deserialisiert. Die deserialisierten Objekte sind jedoch keine Liveobjekte. Sie sind eine Momentaufnahme der Objekte zum Zeitpunkt der Serialisierung. Die deserialisierten Objekte enthalten Eigenschaften, jedoch keine Methoden.
Die TypeNames-eigenschaft enthält den ursprünglichen Typnamen, dem Deserialized
vorangestellt ist.
Beispiel Nr. 3 die TypeNames-Eigenschaft eines deserialisierten Objekts anzeigen.
Import-Clixml
verwendet das Bytereihenfolgenzeichen (BOM), um das Codierungsformat der Datei zu erkennen. Wenn die Datei keine BOM aufweist, wird davon ausgegangen, dass die Codierung UTF8 ist.
Weitere Informationen zu CLI finden Sie unter Sprachunabhängigkeit.
Beispiele
Beispiel 1: Importieren einer serialisierten Datei und Erneutes Erstellen eines Objekts
In diesem Beispiel wird das Cmdlet Export-Clixml
verwendet, um eine serialisierte Kopie der Prozessinformationen zu speichern, die von Get-Process
zurückgegeben werden.
Import-Clixml
ruft den Inhalt der serialisierten Datei ab und erstellt ein Objekt neu, das in der variablen $Processes
gespeichert ist.
Get-Process | Export-Clixml -Path .\pi.xml
$Processes = Import-Clixml -Path .\pi.xml
Beispiel 2: Importieren eines sicheren Anmeldeinformationsobjekts
In diesem Beispiel können Sie das Cmdlet Export-Clixml
ausführen, Get-Credential
um die Anmeldeinformationen auf dem Datenträger zu speichern, wenn Sie in der variablen $Credential
gespeichert haben.
Wichtig
Export-Clixml
exportiert nur verschlüsselte Anmeldeinformationen unter Windows. Auf Nicht-Windows-Betriebssystemen wie macOS und Linux werden Anmeldeinformationen in 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 cmdlet Export-Clixml
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 werden, durch TestScript.ps1.credential
dargestellt. Ersetzen Sie TestScript- durch den Namen des Skripts, mit dem Sie die Anmeldeinformationen laden.
Sie senden das Anmeldeinformationsobjekt an Export-Clixml
, und speichern es im 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 Import-Clixml
aus, um das gesicherte 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
In diesem Beispiel wird gezeigt, wie ein Objekt importiert wird, das als CLIXML-Daten gespeichert ist. Die Daten werden wieder in ein PowerShell-Objekt deserialisiert. Das deserialisierte Objekt ist jedoch kein Liveobjekt. Sie sind eine Momentaufnahme der Objekte zum Zeitpunkt der Serialisierung. Die deserialisierten Objekte enthalten Eigenschaften, jedoch 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 Objekttyp in $original
System.Management.Automation.PSCustomObjectist, der Typ des Objekts in $deserialized
jedoch Deserialized.System.Management.Automation.PSCustomObjectist. 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 ein.
Typ: | UInt64 |
Position: | Named |
Standardwert: | False |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-IncludeTotalCount
Meldet die Gesamtanzahl der Objekte im Dataset, gefolgt von den ausgewählten Objekten. Wenn das Cmdlet die Gesamtanzahl nicht ermitteln kann, wird Unbekannte Gesamtanzahlangezeigt. Die ganze Zahl weist eine Accuracy--Eigenschaft auf, die die Zuverlässigkeit des Gesamtanzahlswerts angibt. Der Wert Genauigkeit reicht von 0.0
bis 1.0
, wobei 0.0
bedeutet, dass das Cmdlet die Objekte nicht zählen konnte, 1.0
bedeutet, dass die Anzahl genau ist und ein Wert zwischen 0.0
und 1.0
eine zunehmend zuverlässige Schätzung angibt.
Typ: | SwitchParameter |
Position: | Named |
Standardwert: | False |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-LiteralPath
Gibt den Pfad zu den XML-Dateien an. Im Gegensatz zu Pathwird der Wert des LiteralPath--Parameters genau so verwendet, wie er eingegeben wird. Es werden keine Zeichen als Wildcards interpretiert. Wenn der Pfad Escapezeichen enthält, schließen Sie ihn in einfache Anführungszeichen ein. Einfache Anführungszeichen weisen PowerShell an, keine Zeichen als Escapesequenzen zu interpretieren.
Typ: | String[] |
Aliase: | PSPath, LP |
Position: | Named |
Standardwert: | None |
Erforderlich: | True |
Pipelineeingabe akzeptieren: | True |
Platzhalterzeichen akzeptieren: | False |
-Path
Gibt den Pfad zu den XML-Dateien an.
Typ: | String[] |
Position: | 0 |
Standardwert: | None |
Erforderlich: | True |
Pipelineeingabe akzeptieren: | True |
Platzhalterzeichen akzeptieren: | False |
-Skip
Ignoriert die angegebene Anzahl von Objekten und ruft dann die verbleibenden Objekte ab. Geben Sie die Anzahl der zu überspringenden Objekte ein.
Typ: | UInt64 |
Position: | Named |
Standardwert: | False |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
Eingaben
Sie können eine Zeichenfolge mit einem Pfad zu diesem Cmdlet weiterleiten.
Ausgaben
Dieses Cmdlet gibt Objekte zurück, die aus den gespeicherten XML-Dateien deserialisiert wurden.
Hinweise
Wenn Sie mehrere Werte für einen Parameter angeben, verwenden Sie Kommas, um die Werte zu trennen. Beispiel: <parameter-name> <value1>, <value2>
.