Export-Clixml
Erstellt eine XML-basierte Darstellung eines Objekts oder von Objekten und speichert sie in einer Datei.
Syntax
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>]
Beschreibung
Das Export-Clixml
Cmdlet serialisiert ein Objekt in eine XML-basierte DARSTELLUNG (Common Language Infrastructure, CLI) speichert es in einer Datei. Anschließend können Sie das Import-Clixml
Cmdlet verwenden, um das gespeicherte Objekt basierend auf dem Inhalt dieser Datei neu zu erstellen. Weitere Informationen zu CLI finden Sie unter Sprachunabhängigkeit.
Dieses Cmdlet ähnelt ConvertTo-Xml
, mit der Ausnahme, dass Export-Clixml
der resultierende XML-Code in einer Datei gespeichert wird. ConvertTo-XML
gibt den XML-Code zurück, sodass Sie ihn weiterhin in PowerShell verarbeiten können.
Eine wertvolle Verwendung von Export-Clixml
Windows-Computern besteht darin, Anmeldeinformationen und sichere Zeichenfolgen sicher als XML zu exportieren. Ein Beispiel finden Sie unter Beispiel 3.
Beispiele
Beispiel 1: Exportieren einer Zeichenfolge in eine XML-Datei
In diesem Beispiel wird eine XML-Datei erstellt, die im aktuellen Verzeichnis gespeichert ist, eine Darstellung der Zeichenfolge . Dies ist ein Test.
"This is a test" | Export-Clixml -Path .\sample.xml
Die Zeichenfolge This is a test
wird an die Pipeline gesendet. Export-Clixml
verwendet den Parameter "Path ", um eine XML-Datei zu erstellen, die im aktuellen Verzeichnis benannt ist sample.xml
.
Beispiel 2: Exportieren eines Objekts in eine XML-Datei
In diesem Beispiel wird veranschaulicht, wie Sie ein Objekt in eine XML-Datei exportieren können und wie Sie dann ein Objekt erstellen können, indem Sie den XML-Code aus der Datei importieren.
Get-Acl C:\test.txt | Export-Clixml -Path .\FileACL.xml
$fileacl = Import-Clixml -Path .\FileACL.xml
Das Get-Acl
Cmdlet ruft die Sicherheitsbeschreibung der Test.txt
Datei ab. Es sendet das Objekt an die Pipeline, um den Sicherheitsdeskriptor an .Export-Clixml
Die XML-basierte Darstellung des Objekts wird in einer Datei mit dem Namen FileACL.xml
gespeichert.
Das Import-Clixml
Cmdlet erstellt ein Objekt aus dem XML-Code in der FileACL.xml
Datei. Anschließend speichert es das Objekt in der $fileacl
Variablen.
Beispiel 3: Verschlüsseln eines exportierten Anmeldeinformationsobjekts unter Windows
In diesem Beispiel können Sie bei einer Anmeldeinformation, die Sie in der $Credential
Variablen gespeichert haben, durch Ausführen des Get-Credential
Cmdlets das Export-Clixml
Cmdlet ausführen, um die Anmeldeinformationen auf dem Datenträger zu speichern.
Wichtig
Export-Clixml
exportiert nur verschlüsselte Anmeldeinformationen unter Windows. Auf Nicht-Windows-Betriebssystemen wie macOS und Linux werden Anmeldeinformationen als Nur-Text exportiert, der als Unicode-Zeichenarray gespeichert ist. Dies bietet einige Verschleierung, bietet jedoch keine Verschlüsselung.
$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 auf diesem Computer 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 die Pipeline Export-Clixml
nach unten, 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 den Befehl aus Import-Clixml
, 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 4: Exportieren eines Anmeldeinformationsobjekts unter Linux oder macOS
In diesem Beispiel erstellen wir mithilfe des Get-Credential
Cmdlets eine PSCredential in der $Credential
Variablen. Anschließend speichern Export-Clixml
wir die Anmeldeinformationen auf dem Datenträger.
Wichtig
Export-Clixml
exportiert nur verschlüsselte Anmeldeinformationen unter Windows. Auf Nicht-Windows-Betriebssystemen wie macOS und Linux werden Anmeldeinformationen als Nur-Text exportiert, der als Unicode-Zeichenarray gespeichert ist. Dies bietet einige Verschleierung, bietet jedoch keine Verschlüsselung.
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
Die Ausgabe Get-Content
in diesem Beispiel wurde abgeschnitten, um sich auf die Anmeldeinformationen in der XML-Datei zu konzentrieren. Beachten Sie, dass der Nur-Text-Wert des Kennworts in der XML-Datei als Unicode-Zeichenarray gespeichert wird, wie durch Format-Hex
. Der Wert ist also codiert, aber nicht verschlüsselt.
Parameter
-Confirm
Hiermit werden Sie vor der Ausführung des Cmdlets zur Bestätigung aufgefordert.
Typ: | SwitchParameter |
Aliase: | cf |
Position: | Named |
Standardwert: | False |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Depth
Gibt an, wie viele Ebenen der enthaltenen Objekte in der XML-Darstellung enthalten sind. Der Standardwert ist 2
.
Der Standardwert kann für den Objekttyp in den Types.ps1xml
Dateien überschrieben werden. Weitere Informationen finden Sie unter about_Types.ps1xml.
Typ: | Int32 |
Position: | Named |
Standardwert: | 2 |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Encoding
Gibt den Typ der Codierung für die Zieldatei an. Der Standardwert ist utf8NoBOM
.
Die zulässigen Werte für diesen Parameter sind wie folgt:
ascii
: Verwendet die Codierung für den ASCII-Zeichensatz (7-Bit).ansi
: Verwendet die Codierung für die ANSI-Codeseite der aktuellen Kultur. Diese Option wurde in 7.4 hinzugefügt.bigendianunicode
: Codiert im UTF-16-Format mit der Big-End-Byte-Reihenfolge.bigendianutf32
: Codiert im UTF-32-Format mithilfe der Big-End-Byte-Reihenfolge.oem
: Verwendet die Standardcodierung für MS-DOS- und Konsolenprogramme.unicode
: Codiert im UTF-16-Format mithilfe der Little-Endian-Bytereihenfolge.utf7
: Codiert im UTF-7-Format.utf8
: Codiert im UTF-8-Format.utf8BOM
: Codiert im UTF-8-Format mit Bytereihenfolgezeichen (BOM)utf8NoBOM
: Codiert im UTF-8-Format ohne Byte Order Mark (BOM)utf32
: Codiert im UTF-32-Format.
Ab PowerShell 6.2 ermöglicht der Encoding-Parameter auch numerische IDs registrierter Codeseiten (z -Encoding 1251
. B. ) oder Zeichenfolgennamen registrierter Codeseiten (z -Encoding "windows-1251"
. B. ). Weitere Informationen finden Sie in der .NET-Dokumentation für Encoding.CodePage.
Ab PowerShell 7.4 können Sie den Ansi
Wert für den Codierungsparameter verwenden, um die numerische ID für die ANSI-Codeseite der aktuellen Kultur zu übergeben, ohne sie manuell angeben zu müssen.
Hinweis
UTF-7* wird nicht mehr empfohlen, zu verwenden. Ab PowerShell 7.1 wird eine Warnung geschrieben, wenn Sie für den Codierungsparameter angebenutf7
.
Typ: | Encoding |
Zulässige Werte: | ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 |
Position: | Named |
Standardwert: | UTF8NoBOM |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Force
Erzwingt die Ausführung des Befehls ohne Aufforderung zur Bestätigung durch den Benutzer.
Bewirkt, dass das Cmdlet das Schreibschutzattribut der Ausgabedatei bei Bedarf deaktiviert. Das Cmdlet versucht, das Schreibschutzattribut zurückzusetzen, wenn der Befehl abgeschlossen ist.
Typ: | SwitchParameter |
Position: | Named |
Standardwert: | False |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-InputObject
Gibt das zu konvertierende Objekt an. Geben Sie eine Variable ein, die die Objekte enthält, oder geben Sie einen Befehl oder einen Ausdruck ein, mit dem die Objekte abgerufen werden. Sie können objekte auch an Export-Clixml
.
Typ: | PSObject |
Position: | Named |
Standardwert: | None |
Erforderlich: | True |
Pipelineeingabe akzeptieren: | True |
Platzhalterzeichen akzeptieren: | False |
-LiteralPath
Gibt den Pfad zur Datei an, wo die XML-Darstellung des Objekts gespeichert wird. 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. 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: | False |
Platzhalterzeichen akzeptieren: | False |
-NoClobber
Gibt an, dass das Cmdlet den Inhalt einer vorhandenen Datei nicht überschreibt. Wenn eine Datei im angegebenen Pfad vorhanden ist, Export-Clixml
wird die Datei standardmäßig ohne Warnung überschrieben.
Typ: | SwitchParameter |
Aliase: | NoOverwrite |
Position: | Named |
Standardwert: | False |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Path
Gibt den Pfad zur Datei an, wo die XML-Darstellung des Objekts gespeichert wird.
Typ: | String |
Position: | 0 |
Standardwert: | None |
Erforderlich: | True |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-WhatIf
Zeigt, was geschieht, wenn das Cmdlet ausgeführt wird. Das Cmdlet wird nicht ausgeführt.
Typ: | SwitchParameter |
Aliase: | wi |
Position: | Named |
Standardwert: | False |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
Eingaben
Sie können jedes Objekt an dieses Cmdlet weiterleiten.
Ausgaben
Dieses Cmdlet gibt ein FileInfo -Objekt zurück, das die erstellte Datei mit den gespeicherten Daten darstellt.