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 erstellt eine XML-basierte XML-basierte Darstellung eines Objekts oder Objekts und speichert sie 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 , außer dass die Export-Clixml resultierende XML-Datei in einer Datei gespeichert wirdConvertTo-Xml. ConvertTo-XML gibt den XML-Code zurück, sodass Sie sie 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 wird, 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 Path-Parameter , 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 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 den Sicherheitsdeskriptor der Test.txt Datei ab. Es sendet das Objekt nach unten, um den Sicherheitsdeskriptor an Export-Clixml. Die XML-basierte Darstellung des Objekts wird in einer Datei mit dem Namen FileACL.xml".

Das Import-Clixml Cmdlet erstellt ein Objekt aus dem XML in der FileACL.xml Datei. Anschließend speichert er das Objekt in der $fileacl Variablen.

Beispiel 3: Verschlüsseln eines exportierten Anmeldeinformationenobjekts unter Windows

In diesem Beispiel können Sie in diesem Beispiel eine Anmeldeinformationen ausführen, die Sie in der $Credential Variablen gespeichert haben, indem Sie das Cmdlet ausführen Get-Credential , um die Export-Clixml Anmeldeinformationen auf dem Datenträger zu speichern.

Wichtig

Export-Clixml exportiert nur verschlüsselte Anmeldeinformationen unter Windows. Bei nicht Windows-Betriebssystemen wie macOS und Linux werden Anmeldeinformationen als Nur-Text exportiert, der als Unicode-Zeichenarray gespeichert ist. Dies stellt einige Obfuscation bereit, 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 Anmeldeinformationenobjekte mithilfe der Windows Data Protection-API. Die Verschlüsselung stellt sicher, dass nur Ihr Benutzerkonto auf dem Computer den Inhalt des Anmeldeinformationenobjekts 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 dargestellt, in der die Anmeldeinformationen gespeichert werden TestScript.ps1.credential. Ersetzen Sie TestScript durch den Namen des Skripts, mit dem Sie die Anmeldeinformationen laden.

Sie senden das Anmeldeinformationenobjekt nach unten an die Pipeline Export-Clixml, und speichern Sie sie im Pfad, $Credxmlpathden Sie im ersten Befehl angegeben haben.

Um die Anmeldeinformationen automatisch in Ihr Skript zu importieren, führen Sie die letzten beiden Befehle aus. Führen Sie Import-Clixml aus, um das gesicherte Anmeldeinformationenobjekt in Ihr Skript zu importieren. Dieser Import beseitigt das Risiko, nur textbasierte Kennwörter in Ihrem Skript zu exponieren.

Beispiel 4: Exportieren eines Anmeldeinformationenobjekts unter Linux oder macOS

In diesem Beispiel erstellen wir eine PSCredential in der $Credential Variablen mithilfe des Get-Credential Cmdlets. Anschließend speichern Export-Clixml wir die Anmeldeinformationen auf dem Datenträger.

Wichtig

Export-Clixml exportiert nur verschlüsselte Anmeldeinformationen unter Windows. Bei nicht Windows-Betriebssystemen wie macOS und Linux werden Anmeldeinformationen als Nur-Text exportiert, der als Unicode-Zeichenarray gespeichert ist. Dies stellt einige Obfuscation bereit, 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 als bewährtes Format-HexUnicode-Zeichenarray gespeichert wird. Der Wert ist also codiert, aber nicht verschlüsselt.

Parameter

-Confirm

Hiermit werden Sie vor der Ausführung des Cmdlets zur Bestätigung aufgefordert.

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Depth

Gibt an, wie viele Ebenen der enthaltenen Objekte in der XML-Darstellung enthalten sind. Standardwert: 2.

Der Standardwert kann für den Objekttyp in den Types.ps1xml Dateien außer Kraft gesetzt werden. Weitere Informationen finden Sie unter about_Types.ps1xml.

Type:Int32
Position:Named
Default value:2
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Encoding

Gibt den Typ der Codierung für die Zieldatei an. Standardwert: utf8NoBOM.

Die zulässigen Werte für diesen Parameter sind wie folgt:

  • ascii: Verwendet die Codierung für den ASCII-Zeichensatz (7-Bit- Zeichensatz).
  • bigendianunicode: Codiert im UTF-16-Format mithilfe der Groß-End-Bytereihenfolge.
  • bigendianutf32: Codiert im UTF-32-Format mithilfe der Groß-End-Bytereihenfolge.
  • oem: Verwendet die Standardcodierung für MS-DOS- und Konsolenprogramme.
  • unicode: Codiert im UTF-16-Format mithilfe der Klein-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 Codierungsparameter auch numerische IDs von registrierten Codeseiten (z. B. ) oder Zeichenfolgennamen registrierter Codeseiten (wie -Encoding 1251z -Encoding "windows-1251". B. ). Weitere Informationen finden Sie in der .NET-Dokumentation für Encoding.CodePage.

Hinweis

UTF-7* wird nicht mehr empfohlen, zu verwenden. Ab PowerShell 7.1 wird eine Warnung geschrieben, wenn Sie den Codierungsparameter angebenutf7.

Type:Encoding
Accepted values:ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32
Position:Named
Default value:UTF8NoBOM
Required:False
Accept pipeline input:False
Accept wildcard characters: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.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters: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 auch Objekte an pipen.Export-Clixml

Type:PSObject
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters: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 wie eingegeben verwendet. 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 darauf hin, keine Zeichen als Escapesequenzen zu interpretieren.

Type:String
Aliases:PSPath, LP
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-NoClobber

Gibt an, dass das Cmdlet den Inhalt einer vorhandenen Datei nicht überschreibt. Wenn eine Datei im angegebenen Pfad vorhanden ist, Export-Clixml überschreibt die Datei standardmäßig ohne Warnung.

Type:SwitchParameter
Aliases:NoOverwrite
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Path

Gibt den Pfad zur Datei an, wo die XML-Darstellung des Objekts gespeichert wird.

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-WhatIf

Zeigt, was geschieht, wenn das Cmdlet ausgeführt wird. Das Cmdlet wird nicht ausgeführt.

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Eingaben

PSObject

Sie können ein beliebiges Objekt an Export-Clixml.

Ausgaben

FileInfo

Export-Clixml erstellt eine Datei, die den XML-Code enthält.