Export-Clixml
Tworzy reprezentację obiektu lub obiektów w formacie XML i przechowuje go w pliku.
Składnia
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>]
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żny
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-Clixml
i 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żny
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
Monituje o potwierdzenie przed uruchomieniem polecenia cmdlet.
Typ: | SwitchParameter |
Aliasy: | cf |
Position: | Named |
Domyślna wartość: | False |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | 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.
Typ: | Int32 |
Position: | Named |
Domyślna wartość: | 2 |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | 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). -
ansi
: używa kodowania dla strony kodowej ANSI bieżącej kultury. Ta opcja została dodana w wersji 7.4. -
bigendianunicode
: koduje w formacie UTF-16 przy użyciu kolejności 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 przy użyciu kolejności 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 bez znaku kolejności bajtów (BOM) -
utf32
: koduje w formacie UTF-32.
Począwszy od programu PowerShell 6.2, Kodowanie parametr umożliwia również numeryczne identyfikatory zarejestrowanych stron kodu (na przykład -Encoding 1251
) lub nazwy ciągów zarejestrowanych stron kodu (na przykład -Encoding "windows-1251"
). Aby uzyskać więcej informacji, zobacz dokumentację platformy .NET dotyczącą Encoding.CodePage.
Począwszy od programu PowerShell 7.4, można użyć wartości Ansi
parametru kodowania, aby przekazać identyfikator liczbowy dla strony kodowej ANSI bieżącej kultury bez konieczności ręcznego określania go.
Nuta
UTF-7 * nie jest już zalecane. Zgodnie z programem PowerShell 7.1 ostrzeżenie jest zapisywane, jeśli określisz utf7
dla parametru kodowania.
Typ: | Encoding |
Dopuszczalne wartości: | ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 |
Position: | Named |
Domyślna wartość: | UTF8NoBOM |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | 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.
Typ: | SwitchParameter |
Position: | Named |
Domyślna wartość: | False |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | 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
.
Typ: | PSObject |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | True |
Akceptowanie danych wejściowych potoku: | True |
Akceptowanie symboli wieloznacznych: | 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. Znaki nie są interpretowane jako symbole wieloznaczne. Jeśli ścieżka zawiera znaki ucieczki, należy ująć ją w pojedynczy cudzysłów. Pojedyncze znaki cudzysłowu informują program PowerShell, aby nie interpretował żadnych znaków jako sekwencji ucieczki.
Typ: | String |
Aliasy: | PSPath, LP |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | True |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | 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.
Typ: | SwitchParameter |
Aliasy: | NoOverwrite |
Position: | Named |
Domyślna wartość: | False |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-Path
Określa ścieżkę do pliku, w którym będzie przechowywana reprezentacja XML obiektu.
Typ: | String |
Position: | 0 |
Domyślna wartość: | None |
Wymagane: | True |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-WhatIf
Pokazuje, co się stanie, jeśli polecenie cmdlet zostanie uruchomione. Polecenie cmdlet nie jest uruchamiane.
Typ: | SwitchParameter |
Aliasy: | wi |
Position: | Named |
Domyślna wartość: | False |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
Dane wejściowe
Możesz potokować dowolny obiekt do tego polecenia cmdlet.
Dane wyjściowe
To polecenie cmdlet zwraca obiekt FileInfo reprezentujący utworzony plik z przechowywanymi danymi.