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
tworzy opartą na języku XML reprezentację obiektu lub obiektów w języku COMMON Language Infrastructure (CLI) i 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). -
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.
Nuta
UTF-7 * nie jest już zalecane. Zgodnie z programem PowerShell 7.1 ostrzeżenie jest zapisywane, jeśli określisz
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, aby Export-Clixml
.
Dane wyjściowe
Export-Clixml
tworzy plik zawierający kod XML.