Export-Clixml
Tworzy reprezentację obiektu lub obiektów w formacie XML i przechowuje go w pliku.
Składnia
ByPath (domyślnie)
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>]
Opis
Polecenie cmdlet Export-Clixml serializował obiekt w reprezentacji xml opartej na języku COMMON Language Infrastructure (CLI) przechowuje go w pliku. Następnie możesz użyć polecenia cmdlet Import-Clixml, aby ponownie utworzyć zapisany obiekt na podstawie zawartości tego pliku. Aby uzyskać więcej informacji na temat interfejsu wiersza polecenia, zobacz Language independence.
To polecenie cmdlet jest podobne do ConvertTo-Xml, z tą różnicą, że Export-Clixml przechowuje wynikowy kod XML w pliku.
ConvertTo-XML zwraca kod XML, więc możesz kontynuować jego przetwarzanie w programie PowerShell.
Cennym zastosowaniem Export-Clixml na komputerach z systemem Windows jest bezpieczne eksportowanie poświadczeń i zabezpieczanie ciągów jako XML. Przykład można znaleźć w przykładzie 3.
Przykłady
Przykład 1. Eksportowanie ciągu do pliku XML
W tym przykładzie tworzony jest plik XML, który przechowuje w bieżącym katalogu reprezentację ciągu Jest to test.
"This is a test" | Export-Clixml -Path .\sample.xml
Ciąg This is a test jest wysyłany w dół potoku.
Export-Clixml używa parametru Path w celu utworzenia pliku XML o nazwie sample.xml w bieżącym katalogu.
Przykład 2. Eksportowanie obiektu do pliku XML
W tym przykładzie pokazano, jak wyeksportować obiekt do pliku XML, a następnie utworzyć obiekt przez zaimportowanie kodu XML z pliku.
Get-Acl C:\test.txt | Export-Clixml -Path .\FileACL.xml
$fileacl = Import-Clixml -Path .\FileACL.xml
Polecenie cmdlet Get-Acl pobiera deskryptor zabezpieczeń pliku Test.txt. Wysyła obiekt w dół potoku, aby przekazać deskryptor zabezpieczeń do Export-Clixml. Reprezentacja obiektu oparta na formacie XML jest przechowywana w pliku o nazwie FileACL.xml.
Polecenie cmdlet Import-Clixml tworzy obiekt z pliku XML w pliku FileACL.xml. Następnie zapisuje obiekt w zmiennej $fileacl.
Przykład 3. Szyfrowanie wyeksportowanego obiektu poświadczeń w systemie Windows
W tym przykładzie, biorąc pod uwagę poświadczenia przechowywane w zmiennej $Credential, uruchamiając polecenie cmdlet Get-Credential, możesz uruchomić polecenie cmdlet Export-Clixml, aby zapisać poświadczenia na dysku.
Ważne
Export-Clixml eksportuje tylko zaszyfrowane poświadczenia w systemie Windows. W systemach operacyjnych innych niż Windows, takich jak macOS i Linux, poświadczenia są eksportowane jako zwykły tekst przechowywany jako tablica znaków Unicode. Zapewnia to pewne zaciemnianie, ale nie zapewnia szyfrowania.
$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
Polecenie cmdlet Export-Clixml szyfruje obiekty poświadczeń przy użyciu interfejsu API ochrony danych systemu Windows . Szyfrowanie gwarantuje, że tylko konto użytkownika na tym komputerze może odszyfrować zawartość obiektu poświadczeń.
Wyeksportowany plik CLIXML nie może być używany na innym komputerze ani przez innego użytkownika.
W przykładzie plik, w którym przechowywane są poświadczenia, jest reprezentowany przez TestScript.ps1.credential. Zastąp TestScript nazwą skryptu, za pomocą którego ładujesz poświadczenia.
Obiekt poświadczeń zostanie wysłany w dół potoku do Export-Clixmli zapisz go w ścieżce $Credxmlpath, który został określony w pierwszym poleceniu.
Aby automatycznie zaimportować poświadczenia do skryptu, uruchom dwa ostatnie polecenia. Uruchom Import-Clixml, aby zaimportować zabezpieczony obiekt poświadczeń do skryptu. Ten import eliminuje ryzyko ujawnienia haseł w postaci zwykłego tekstu w skrypcie.
Przykład 4. Eksportowanie obiektu poświadczeń w systemie Linux lub macOS
W tym przykładzie utworzymy PSCredential w zmiennej $Credential przy użyciu polecenia cmdlet Get-Credential. Następnie użyjemy Export-Clixml, aby zapisać poświadczenia na dysku.
Ważne
Export-Clixml eksportuje tylko zaszyfrowane poświadczenia w systemie Windows. W systemach operacyjnych innych niż Windows, takich jak macOS i Linux, poświadczenia są eksportowane jako zwykły tekst przechowywany jako tablica znaków Unicode. Zapewnia to pewne zaciemnianie, ale nie zapewnia szyfrowania.
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
Dane wyjściowe Get-Content w tym przykładzie zostały obcięte, aby skoncentrować się na informacjach o poświadczeniach w pliku XML. Należy pamiętać, że wartość zwykłego tekstu hasła jest przechowywana w pliku XML jako tablica znaków Unicode sprawdzona przez Format-Hex. Dlatego wartość jest kodowana, ale nie szyfrowana.
Parametry
-Confirm
Prosi o potwierdzenie przed uruchomieniem cmdletu.
Właściwości parametru
| Typ: | SwitchParameter |
| Domyślna wartość: | False |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
| Aliasy: | por |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowe: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-Depth
Określa, ile poziomów zawartych obiektów jest uwzględnionych w reprezentacji XML. Wartość domyślna to 2.
Wartość domyślna może zostać zastąpiona dla typu obiektu w plikach Types.ps1xml. Aby uzyskać więcej informacji, zobacz about_Types.ps1xml.
Właściwości parametru
| Typ: | Int32 |
| Domyślna wartość: | 2 |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowe: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-Encoding
Określa typ kodowania dla pliku docelowego. Wartość domyślna to utf8NoBOM.
Dopuszczalne wartości tego parametru są następujące:
-
ascii: używa kodowania zestawu znaków ASCII (7-bitowych). -
bigendianunicode: Koduje w formacie UTF-16 wykorzystując porządek bajtów big-endian. -
bigendianutf32: Koduje w formacie UTF-32 przy użyciu kolejności bajtów big-endian. -
oem: używa domyślnego kodowania dla programów MS-DOS i konsoli. -
unicode: Koduje w formacie UTF-16, używając układu bajtów little-endian. -
utf7: koduje w formacie UTF-7. -
utf8: koduje w formacie UTF-8. -
utf8BOM: koduje w formacie UTF-8 za pomocą znacznika kolejności bajtów (BOM) -
utf8NoBOM: Koduje w formacie UTF-8, nie używając znacznika kolejności bajtów (BOM) -
utf32: koduje w formacie UTF-32.
Począwszy od programu PowerShell 6.2, w parametrze Kodowanie można używać również numerycznych identyfikatorów zarejestrowanych stron kodu (na przykład -Encoding 1251) lub nazw tekstowych zarejestrowanych stron kodu (na przykład -Encoding "windows-1251"). Aby uzyskać więcej informacji, zobacz dokumentację platformy .NET dotyczącą Encoding.CodePage.
Uwaga / Notatka
UTF-7* nie jest już zalecane do użycia. Od wersji PowerShell 7.1 zapisywane jest ostrzeżenie, jeśli określisz utf7 dla parametru kodowania .
Właściwości parametru
| Typ: | Encoding |
| Domyślna wartość: | UTF8NoBOM |
| Dopuszczalne wartości: | ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowe: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-Force
Wymusza uruchomienie polecenia bez monitowania o potwierdzenie użytkownika.
Polecenie cmdlet powoduje w razie potrzeby wyczyszczenie atrybutu tylko do odczytu pliku wyjściowego. Polecenie cmdlet podejmie próbę zresetowania atrybutu tylko do odczytu po zakończeniu polecenia.
Właściwości parametru
| Typ: | SwitchParameter |
| Domyślna wartość: | False |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowe: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-InputObject
Określa obiekt, który ma zostać przekonwertowany. Wprowadź zmienną zawierającą obiekty lub wpisz polecenie lub wyrażenie, które pobiera obiekty. Można również potokować obiekty do Export-Clixml.
Właściwości parametru
| Typ: | PSObject |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowe: | True |
| Wartość z potoku: | True |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-LiteralPath
Określa ścieżkę do pliku, w którym będzie przechowywana reprezentacja XML obiektu. W przeciwieństwie do Pathwartość parametru LiteralPath jest używana dokładnie tak, jak jest typowana. Żadne znaki nie są interpretowane jako symbole wieloznaczne. Jeśli ścieżka zawiera znaki ucieczki, należy ująć ją w pojedynczy cudzysłów. Pojedyncze cudzysłowy wskazują programowi PowerShell, aby nie interpretował żadnych znaków jako sekwencji ucieczki.
Właściwości parametru
| Typ: | String |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
| Aliasy: | PSPath, LP |
Zestawy parametrów
ByLiteralPath
| Position: | Named |
| Obowiązkowe: | True |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-NoClobber
Wskazuje, że polecenie cmdlet nie zastępuje zawartości istniejącego pliku. Domyślnie, jeśli plik istnieje w określonej ścieżce, Export-Clixml zastąpi plik bez ostrzeżenia.
Właściwości parametru
| Typ: | SwitchParameter |
| Domyślna wartość: | False |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
| Aliasy: | NoOverwrite |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowe: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-Path
Określa ścieżkę do pliku, w którym będzie przechowywana reprezentacja XML obiektu.
Właściwości parametru
| Typ: | String |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
ByPath
| Position: | 0 |
| Obowiązkowe: | True |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-WhatIf
Pokazuje, co się stanie, jeśli polecenie cmdlet zostanie uruchomione. Cmdlet nie został uruchomiony.
Właściwości parametru
| Typ: | SwitchParameter |
| Domyślna wartość: | False |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
| Aliasy: | Wi |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowe: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
CommonParameters
To polecenie cmdlet obsługuje typowe parametry: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction i -WarningVariable. Aby uzyskać więcej informacji, zobacz about_CommonParameters.
Dane wejściowe
PSObject
Możesz potokować dowolny obiekt do tego polecenia cmdlet.
Dane wyjściowe
FileInfo
To polecenie cmdlet zwraca obiekt FileInfo reprezentujący utworzony plik z przechowywanymi danymi.