Udostępnij za pośrednictwem


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

PSObject

Możesz potokować dowolny obiekt, aby Export-Clixml.

Dane wyjściowe

FileInfo

Export-Clixml tworzy plik zawierający kod XML.