Export-Clixml
Erstellt eine XML-basierte Darstellung eines Objekts oder Objekts und speichert es in einer Datei.
Syntax
ByPath (Standard)
Export-Clixml
[-Path] <String>
-InputObject <PSObject>
[-Depth <Int32>]
[-Force]
[-NoClobber]
[-Encoding <Encoding>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
ByLiteralPath
Export-Clixml
-LiteralPath <String>
-InputObject <PSObject>
[-Depth <Int32>]
[-Force]
[-NoClobber]
[-Encoding <Encoding>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Beschreibung
Das cmdlet Export-Clixml serialisiert ein Objekt in einer XML-basierten CLI-Darstellung (Common Language Infrastructure) speichert es in einer Datei. Anschließend können Sie das cmdlet Import-Clixml 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 den resultierenden XML-Code in einer Datei speichert.
ConvertTo-XML gibt den XML-Code zurück, sodass Sie ihn weiterhin in PowerShell verarbeiten können.
Eine wertvolle Verwendung von Export-Clixml auf 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 namens sample.xml im aktuellen Verzeichnis zu erstellen.
Beispiel 2: Exportieren eines Objekts in eine XML-Datei
In diesem Beispiel wird gezeigt, wie Sie ein Objekt in eine XML-Datei exportieren und dann ein Objekt erstellen, 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 cmdlet Get-Acl ruft den Sicherheitsdeskriptor der Test.txt Datei ab. Es sendet das Objekt an die Pipeline, um den Sicherheitsdeskriptor an Export-Clixmlzu übergeben. Die XML-basierte Darstellung des Objekts wird in einer Datei mit dem Namen FileACL.xmlgespeichert.
Das Cmdlet Import-Clixml 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 das Cmdlet $Credential ausführen, Get-Credential um die Anmeldeinformationen auf dem Datenträger zu speichern, wenn Sie in der variablen Export-Clixml gespeichert haben.
Von Bedeutung
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 cmdlet Export-Clixml 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.credentialdargestellt. 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 4: Exportieren eines Anmeldeinformationsobjekts unter Linux oder macOS
In diesem Beispiel erstellen wir mithilfe des Cmdlets eine $Credential in der variablen Get-Credential. Anschließend verwenden wir Export-Clixml, um die Anmeldeinformationen auf dem Datenträger zu speichern.
Von Bedeutung
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 von 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 von Format-Hexnachgewiesen. Der Wert ist also codiert, aber nicht verschlüsselt.
Parameter
-Confirm
Fordert Sie zur Bestätigung auf, bevor Sie das Cmdlet ausführen.
Parametereigenschaften
| Typ: | SwitchParameter |
| Standardwert: | False |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
| Aliase: | vgl |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-Depth
Gibt an, wie viele Ebenen von enthaltenen Objekten 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.
Parametereigenschaften
| Typ: | Int32 |
| Standardwert: | 2 |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | 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). -
bigendianunicode: Codiert im UTF-16-Format mithilfe der Big-Endian-Byte-Reihenfolge. -
bigendianutf32: Codiert im UTF-32-Format unter Verwendung der Big-Endian-Byte-Reihenfolge. -
oem: Verwendet die Standardcodierung für MS-DOS- und Konsolenprogramme. -
unicode: Codiert im UTF-16-Format unter Verwendung der "little-endian"-Bytereihenfolge. -
utf7: Codiert im UTF-7-Format. -
utf8: Codiert im UTF-8-Format. -
utf8BOM: Codiert im UTF-8-Format mit Byte Order Mark (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 parameter Encoding auch numerische IDs registrierter Codeseiten (z. B. -Encoding 1251) oder Zeichenfolgennamen registrierter Codeseiten (z. B. -Encoding "windows-1251"). Weitere Informationen finden Sie in der .NET-Dokumentation für Encoding.CodePage-.
Hinweis
Die Verwendung von UTF-7* wird nicht mehr empfohlen. Ab PowerShell 7.1 wird eine Warnung geschrieben, wenn Sie utf7 für den parameter Encoding angeben.
Parametereigenschaften
| Typ: | Encoding |
| Standardwert: | UTF8NoBOM |
| Zulässige Werte: | ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-Force
Erzwingt die Ausführung des Befehls, ohne eine Benutzerbestätigung zu verlangen.
Bewirkt, dass das Cmdlet bei Bedarf das schreibgeschützte Attribut der Ausgabedatei löscht. Das Cmdlet versucht, das schreibgeschützte Attribut zurückzusetzen, wenn der Befehl abgeschlossen ist.
Parametereigenschaften
| Typ: | SwitchParameter |
| Standardwert: | False |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-InputObject
Gibt das zu konvertierende Objekt an. Geben Sie eine Variable ein, die die Objekte enthält, oder geben Sie einen Befehl oder Ausdruck ein, der die Objekte ermittelt. Sie können Objekte auch an Export-Clixmlverrohren.
Parametereigenschaften
| Typ: | PSObject |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch: | True |
| Wert aus Pipeline: | True |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-LiteralPath
Gibt den Pfad zu der Datei an, in der die XML-Darstellung des Objekts gespeichert wird. 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, müssen Sie ihn in einfache Anführungszeichen einschließen. Einfache Anführungszeichen signalisieren PowerShell, dass keine Zeichen als Escapesequenzen interpretiert werden sollen.
Parametereigenschaften
| Typ: | String |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
| Aliase: | PSPath, EP |
Parametersätze
ByLiteralPath
| Position: | Named |
| Obligatorisch: | True |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-NoClobber
Gibt an, dass das Cmdlet den Inhalt einer vorhandenen Datei nicht überschreibt. Wenn eine Datei im angegebenen Pfad vorhanden ist, überschreibt Export-Clixml die Datei standardmäßig ohne Warnung.
Parametereigenschaften
| Typ: | SwitchParameter |
| Standardwert: | False |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
| Aliase: | NoOverwrite |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-Path
Gibt den Pfad zu der Datei an, in der die XML-Darstellung des Objekts gespeichert wird.
Parametereigenschaften
| Typ: | String |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
ByPath
| Position: | 0 |
| Obligatorisch: | True |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-WhatIf
Zeigt, was passiert, wenn das Cmdlet ausgeführt wird. Das Cmdlet wird nicht ausgeführt.
Parametereigenschaften
| Typ: | SwitchParameter |
| Standardwert: | False |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
| Aliase: | Wi |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
CommonParameters
Dieses Cmdlet unterstützt die allgemeinen Parameter -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction und -WarningVariable. Weitere Informationen findest du unter about_CommonParameters.
Eingaben
PSObject
Sie können jedes Objekt an dieses Cmdlet weiterleiten.
Ausgaben
FileInfo
Dieses Cmdlet gibt ein FileInfo Objekt zurück, das die erstellte Datei mit den gespeicherten Daten darstellt.