Export-Clixml
Skapar en XML-baserad representation av ett objekt eller objekt och lagrar det i en fil.
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
Cmdleten Export-Clixml
serialiserade ett objekt till en XML-baserad representation baserad på Common Language Infrastructure (CLI) och lagrar det i en fil. Du kan sedan använda cmdleten Import-Clixml
för att återskapa det sparade objektet baserat på innehållet i filen. Mer information om CLI finns i Språkberoende.
Den här cmdleten liknar ConvertTo-Xml
, förutom att Export-Clixml
lagrar resulterande XML i en fil. ConvertTo-XML
returnerar XML-koden så att du kan fortsätta att bearbeta den i PowerShell.
En värdefull användning av Export-Clixml
på Windows-datorer är att exportera autentiseringsuppgifter och skydda strängar på ett säkert sätt som XML. Ett exempel finns i Exempel 3.
Exempel
Exempel 1: Exportera en sträng till en XML-fil
Det här exemplet skapar en XML-fil som lagrar i den aktuella katalogen, en representation av strängen Detta är ett test.
"This is a test" | Export-Clixml -Path .\sample.xml
Strängen This is a test
skickas nedåt i pipelinen. Export-Clixml
använder parametern Sökväg för att skapa en XML-fil med namnet sample.xml
i den aktuella katalogen.
Exempel 2: Exportera ett objekt till en XML-fil
Det här exemplet visar hur du exporterar ett objekt till en XML-fil och sedan skapar ett objekt genom att importera XML från filen.
Get-Acl C:\test.txt | Export-Clixml -Path .\FileACL.xml
$fileacl = Import-Clixml -Path .\FileACL.xml
Cmdleten Get-Acl
hämtar säkerhetsbeskrivningen för Test.txt
filen. Det skickar objektet nedåt i pipelinen för att skicka säkerhetsbeskrivningen till Export-Clixml
. Den XML-baserade representationen av objektet lagras i en fil med namnet FileACL.xml
.
Cmdleten Import-Clixml
skapar ett objekt från XML-koden i FileACL.xml
filen. Sedan sparas objektet i variabeln $fileacl
.
Exempel 3: Kryptera ett exporterat autentiseringsobjekt i Windows
I det här exemplet kan du, med tanke på en autentiseringsuppgift som du har lagrat i variabeln $Credential
genom att köra cmdleten Get-Credential
, köra cmdleten Export-Clixml
för att spara autentiseringsuppgifterna på disken.
Viktigt!
Export-Clixml
exporterar endast krypterade autentiseringsuppgifter i Windows. I icke-Windows-operativsystem som macOS och Linux exporteras autentiseringsuppgifterna som en oformaterad text som lagras som en Unicode-teckenmatris. Detta ger viss fördunkling men tillhandahåller inte kryptering.
$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
Cmdleten Export-Clixml
krypterar autentiseringsobjekt med hjälp av Windows Data Protection-API:et. Krypteringen säkerställer att endast ditt användarkonto på den datorn kan dekryptera innehållet i objektet för autentiseringsuppgifter.
Den exporterade CLIXML
filen kan inte användas på en annan dator eller av en annan användare.
I exemplet representeras filen där autentiseringsuppgifterna lagras av TestScript.ps1.credential
. Ersätt TestScript med namnet på skriptet som du läser in autentiseringsuppgifterna med.
Du skickar autentiseringsobjektet nedåt i pipelinen till Export-Clixml
och sparar det i sökvägen, $Credxmlpath
, som du angav i det första kommandot.
Om du vill importera autentiseringsuppgifterna automatiskt till skriptet kör du de två sista kommandona. Kör Import-Clixml
för att importera det skyddade autentiseringsobjektet till skriptet. Den här importen eliminerar risken för att exponera oformaterade lösenord i skriptet.
Exempel 4: Exportera ett autentiseringsobjekt i Linux eller macOS
I det här exemplet skapar vi en PSCredential i variabeln $Credential
med hjälp av cmdleten Get-Credential
. Sedan använder Export-Clixml
vi för att spara autentiseringsuppgifterna på disken.
Viktigt!
Export-Clixml
exporterar endast krypterade autentiseringsuppgifter i Windows. I icke-Windows-operativsystem som macOS och Linux exporteras autentiseringsuppgifterna som en oformaterad text som lagras som en Unicode-teckenmatris. Detta ger viss fördunkling men tillhandahåller inte kryptering.
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
Utdata från Get-Content
i det här exemplet har trunkerats för att fokusera på autentiseringsinformationen i XML-filen. Observera att lösenordets oformaterade textvärde lagras i XML-filen som en Unicode-teckenmatris som bevisas av Format-Hex
. Så värdet är kodat men inte krypterat.
Parametrar
-Confirm
Uppmanar dig att bekräfta innan du kör cmdleten.
Typ: | SwitchParameter |
Alias: | cf |
Position: | Named |
Standardvärde: | False |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-Depth
Anger hur många nivåer av inneslutna objekt som ingår i XML-representationen. Standardvärdet är 2
.
Standardvärdet kan åsidosättas för objekttypen i Types.ps1xml
filerna. Mer information finns i about_Types.ps1xml.
Typ: | Int32 |
Position: | Named |
Standardvärde: | 2 |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-Encoding
Anger typen av kodning för målfilen. Standardvärdet är utf8NoBOM
.
Godkända värden för den här parametern är följande:
ascii
: Använder kodningen för ASCII-teckenuppsättningen (7-bitars).ansi
: Använder kodningen för för den aktuella kulturens ANSI-kodsida. Det här alternativet lades till i 7.4.bigendianunicode
: Kodar i UTF-16-format med hjälp av den stora byteordningen.bigendianutf32
: Kodar i UTF-32-format med hjälp av storslutsbyteordningen.oem
: Använder standardkodning för MS-DOS och konsolprogram.unicode
: Kodar i UTF-16-format med hjälp av den lite endianska byteordningen.utf7
: Kodar i UTF-7-format.utf8
: Kodar i UTF-8-format.utf8BOM
: Kodar i UTF-8-format med Byte Order Mark (BOM)utf8NoBOM
: Kodar i UTF-8-format utan Byte Order Mark (BOM)utf32
: Kodar i UTF-32-format.
Från och med PowerShell 6.2 tillåter kodningsparametern även numeriska ID:n för registrerade kodsidor (till exempel -Encoding 1251
) eller strängnamn för registrerade kodsidor (till exempel -Encoding "windows-1251"
). Mer information finns i .NET-dokumentationen för Encoding.CodePage.
Från och med PowerShell 7.4 kan du använda Ansi
värdet för kodningsparametern för att skicka det numeriska ID:t för den aktuella kulturens ANSI-kodsida utan att behöva ange det manuellt.
Kommentar
UTF-7* rekommenderas inte längre att använda. Från och med PowerShell 7.1 skrivs en varning om du anger utf7
för kodningsparametern .
Typ: | Encoding |
Godkända värden: | ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 |
Position: | Named |
Standardvärde: | UTF8NoBOM |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-Force
Tvingar kommandot att köras utan att be om användarbekräftelse.
Gör att cmdleten rensar det skrivskyddade attributet för utdatafilen om det behövs. Cmdleten försöker återställa det skrivskyddade attributet när kommandot har slutförts.
Typ: | SwitchParameter |
Position: | Named |
Standardvärde: | False |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-InputObject
Anger det objekt som ska konverteras. Ange en variabel som innehåller objekten eller skriv ett kommando eller uttryck som hämtar objekten. Du kan också skicka objekt till Export-Clixml
.
Typ: | PSObject |
Position: | Named |
Standardvärde: | None |
Obligatorisk: | True |
Godkänn pipeline-indata: | True |
Godkänn jokertecken: | False |
-LiteralPath
Anger sökvägen till filen där XML-representationen av objektet ska lagras. Till skillnad från Path används värdet för parametern LiteralPath precis som det skrivs. Inga tecken tolkas som jokertecken. Om sökvägen innehåller escape-tecken omger du den med enkla citattecken. Enkla citattecken gör att PowerShell inte tolkar några tecken som escape-sekvenser.
Typ: | String |
Alias: | PSPath, LP |
Position: | Named |
Standardvärde: | None |
Obligatorisk: | True |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-NoClobber
Anger att cmdleten inte skriver över innehållet i en befintlig fil. Om det finns en fil i den angivna sökvägen Export-Clixml
skriver du som standard över filen utan förvarning.
Typ: | SwitchParameter |
Alias: | NoOverwrite |
Position: | Named |
Standardvärde: | False |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-Path
Anger sökvägen till filen där XML-representationen av objektet ska lagras.
Typ: | String |
Position: | 0 |
Standardvärde: | None |
Obligatorisk: | True |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-WhatIf
Visar vad som skulle hända om cmdleten kördes. Cmdleten körs inte.
Typ: | SwitchParameter |
Alias: | wi |
Position: | Named |
Standardvärde: | False |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
Indata
Du kan pipelines alla objekt till den här cmdleten.
Utdata
Den här cmdleten returnerar ett FileInfo-objekt som representerar den skapade filen med lagrade data.