Delen via


Export-Clixml

Hiermee maakt u een XML-weergave van een of meer objecten en slaat u deze op in een bestand.

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>]

Description

Met de Export-Clixml cmdlet wordt een object geserialiseerd in een XML-gebaseerde weergave van een CLI (Common Language Infrastructure) die het object opslaat in een bestand. U kunt vervolgens de Import-Clixml cmdlet gebruiken om het opgeslagen object opnieuw te maken op basis van de inhoud van dat bestand. Zie Taalafhankelijkheid voor meer informatie over CLI.

Deze cmdlet is vergelijkbaar met ConvertTo-Xml, behalve dat Export-Clixml de resulterende XML wordt opgeslagen in een bestand. ConvertTo-XML retourneert de XML, zodat u deze kunt blijven verwerken in PowerShell.

Een waardevol gebruik van op Windows-computers is het veilig exporteren van Export-Clixml referenties en beveiligde tekenreeksen als XML. Zie voorbeeld 3 voor een voorbeeld.

Voorbeelden

Voorbeeld 1: een tekenreeks exporteren naar een XML-bestand

In dit voorbeeld wordt een XML-bestand gemaakt dat wordt opgeslagen in de huidige map, een weergave van de tekenreeks Dit is een test.

"This is a test" | Export-Clixml -Path .\sample.xml

De tekenreeks This is a test wordt door de pijplijn verzonden. Export-Clixml gebruikt de parameter Path om een XML-bestand met de naam sample.xml te maken in de huidige map.

Voorbeeld 2: Een object exporteren naar een XML-bestand

In dit voorbeeld ziet u hoe u een object exporteert naar een XML-bestand en vervolgens een object maakt door de XML uit het bestand te importeren.

Get-Acl C:\test.txt | Export-Clixml -Path .\FileACL.xml
$fileacl = Import-Clixml -Path .\FileACL.xml

De Get-Acl cmdlet haalt de security descriptor van het bestand op Test.txt . Het object wordt via de pijplijn verzonden om de security descriptor door te geven aan Export-Clixml. De XML-weergave van het object wordt opgeslagen in een bestand met de naam FileACL.xml.

De Import-Clixml cmdlet maakt een -object op basis van de XML in het FileACL.xml bestand. Vervolgens wordt het object opgeslagen in de $fileacl variabele.

Voorbeeld 3: Een geëxporteerd referentieobject versleutelen in Windows

In dit voorbeeld kunt u, op basis van een referentie die u hebt opgeslagen in de $Credential variabele door de Get-Credential cmdlet uit te voeren, de Export-Clixml cmdlet uitvoeren om de referentie op schijf op te slaan.

Belangrijk

Export-Clixml exporteert alleen versleutelde referenties in Windows. Op niet-Windows-besturingssystemen, zoals macOS en Linux, worden referenties geëxporteerd als tekst zonder opmaak die is opgeslagen als een Unicode-tekenmatrix. Dit biedt enige verdoezeling, maar geen versleuteling.

$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

De Export-Clixml cmdlet versleutelt referentieobjecten met behulp van de Windows Data Protection-API. De versleuteling zorgt ervoor dat alleen uw gebruikersaccount op die computer de inhoud van het referentieobject kan ontsleutelen. Het geëxporteerde CLIXML bestand kan niet worden gebruikt op een andere computer of door een andere gebruiker.

In het voorbeeld wordt het bestand waarin de referentie is opgeslagen, vertegenwoordigd door TestScript.ps1.credential. Vervang TestScript door de naam van het script waarmee u de referentie laadt.

U verzendt het referentieobject in de pijplijn naar Export-Clixmlen slaat het op in het pad, $Credxmlpath, dat u in de eerste opdracht hebt opgegeven.

Als u de referentie automatisch wilt importeren in uw script, voert u de laatste twee opdrachten uit. Voer uit Import-Clixml om het beveiligde referentieobject in uw script te importeren. Met deze import elimineert u het risico dat wachtwoorden zonder opmaak in uw script worden weergegeven.

Voorbeeld 4: een referentieobject exporteren in Linux of macOS

In dit voorbeeld maken we een PSCredential in de $Credential variabele met behulp van de Get-Credential cmdlet. Vervolgens gebruiken Export-Clixml we om de referentie op schijf op te slaan.

Belangrijk

Export-Clixml exporteert alleen versleutelde referenties in Windows. Op niet-Windows-besturingssystemen, zoals macOS en Linux, worden referenties geëxporteerd als tekst zonder opmaak die is opgeslagen als een Unicode-tekenmatrix. Dit biedt enige verdoezeling, maar geen versleuteling.

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

De uitvoer van Get-Content in dit voorbeeld is afgekapt om zich te richten op de referentiegegevens in het XML-bestand. Houd er rekening mee dat de waarde voor tekst zonder opmaak van het wachtwoord wordt opgeslagen in het XML-bestand als een Unicode-tekenmatrix, zoals bewezen door Format-Hex. De waarde is dus gecodeerd, maar niet versleuteld.

Parameters

-Confirm

Hiermee wordt u gevraagd om bevestiging voordat u de cmdlet uitvoert.

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

-Depth

Hiermee geeft u op hoeveel niveaus van ingesloten objecten zijn opgenomen in de XML-weergave. De standaardwaarde is 2.

De standaardwaarde kan worden overschreven voor het objecttype in de Types.ps1xml bestanden. Zie about_Types.ps1xml voor meer informatie.

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

-Encoding

Hiermee geeft u het type codering voor het doelbestand. De standaardwaarde is utf8NoBOM.

De acceptabele waarden voor deze parameter zijn als volgt:

  • ascii: maakt gebruik van de codering voor de ASCII-tekenset (7-bits).
  • bigendianunicode: Codeert in UTF-16-indeling met behulp van de bytevolgorde big-endian.
  • bigendianutf32: Codeert in UTF-32-indeling met behulp van de bytevolgorde big-endian.
  • oem: Maakt gebruik van de standaardcodering voor MS-DOS en consoleprogramma's.
  • unicode: Codeert in UTF-16-indeling met behulp van de bytevolgorde little-endian.
  • utf7: Codeert in UTF-7-indeling.
  • utf8: Codeert in UTF-8-indeling.
  • utf8BOM: Codeert in UTF-8-indeling met Byte Order Mark (BOM)
  • utf8NoBOM: Codeert in UTF-8-indeling zonder Byte Order Mark (BOM)
  • utf32: Codeert in UTF-32-indeling.

Vanaf PowerShell 6.2 staat de coderingsparameter ook numerieke id's toe van geregistreerde codepagina's (zoals -Encoding 1251) of tekenreeksnamen van geregistreerde codepagina's (zoals -Encoding "windows-1251"). Zie de .NET-documentatie voor Encoding.CodePage voor meer informatie.

Notitie

UTF-7* wordt niet meer aanbevolen om te gebruiken. Vanaf PowerShell 7.1 wordt er een waarschuwing geschreven als u opgeeft utf7 voor de parameter Encoding .

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

Hiermee dwingt u de opdracht uit te voeren zonder om bevestiging van de gebruiker te vragen.

Zorgt ervoor dat de cmdlet het kenmerk alleen-lezen van het uitvoerbestand indien nodig wist. De cmdlet probeert het kenmerk Alleen-lezen opnieuw in te stellen wanneer de opdracht is voltooid.

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

-InputObject

Hiermee geeft u het object moet worden geconverteerd. Voer een variabele in die de objecten bevat of typ een opdracht of expressie waarmee de objecten worden opgehaald. U kunt ook objecten doorsnijden naar Export-Clixml.

Type:PSObject
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-LiteralPath

Hiermee geeft u het pad naar het bestand waar de XML-weergave van het object wordt opgeslagen. In tegenstelling tot Path wordt de waarde van de parameter LiteralPath exact gebruikt zoals deze wordt getypt. Er worden geen tekens geïnterpreteerd als jokertekens. Als het pad escapetekens bevat, plaatst u het tussen enkele aanhalingstekens. Enkele aanhalingstekens vertellen PowerShell dat geen tekens als escape-reeksen worden geïnterpreteerd.

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

-NoClobber

Geeft aan dat de cmdlet de inhoud van een bestaand bestand niet overschrijft. Als er een bestand in het opgegeven pad bestaat, Export-Clixml wordt het bestand standaard zonder waarschuwing overschreven.

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

-Path

Hiermee geeft u het pad naar het bestand waar de XML-weergave van het object wordt opgeslagen.

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

-WhatIf

Hiermee wordt weergegeven wat er zou gebeuren als u de cmdlet uitvoert. De cmdlet wordt niet uitgevoerd.

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

Invoerwaarden

PSObject

U kunt een pijplijn voor elk object naar deze cmdlet uitvoeren.

Uitvoerwaarden

FileInfo

Deze cmdlet retourneert een FileInfo-object dat het gemaakte bestand met de opgeslagen gegevens vertegenwoordigt.