Export-Clixml

Tworzy reprezentację obiektu lub obiektów opartą na formacie XML i przechowuje ją 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 Export-Clixml cmdlet tworzy opartą na języku XML reprezentację obiektu lub obiektów w języku Common Language Infrastructure (CLI) i zapisuje ją w pliku. Następnie możesz użyć Import-Clixml polecenia cmdlet , aby ponownie utworzyć zapisany obiekt na podstawie zawartości tego pliku. Aby uzyskać więcej informacji na temat interfejsu wiersza polecenia, zobacz Niezależność języka.

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, aby można było kontynuować przetwarzanie go w programie PowerShell.

Cennym zastosowaniem na komputerach z Export-Clixml systemem Windows jest bezpieczne eksportowanie poświadczeń i zabezpieczanie ciągów jako XML. Aby zapoznać się z przykładem, zobacz Przykład 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 To jest 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 do 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 Get-Acl cmdlet pobiera deskryptor zabezpieczeń Test.txt pliku. 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 Import-Clixml cmdlet tworzy obiekt z pliku XML FileACL.xml . Następnie zapisuje obiekt w zmiennej $fileacl .

Przykład 3. Szyfrowanie wyeksportowanego obiektu poświadczeń w systemie Windows

W tym przykładzie poświadczenie przechowywane w zmiennej $Credential przez uruchomienie polecenia cmdlet można uruchomić Get-CredentialExport-Clixml polecenie cmdlet, 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 Export-Clixml cmdlet szyfruje obiekty poświadczeń przy użyciu interfejsu API ochrony danych systemu Windows. Szyfrowanie gwarantuje, że tylko twoje konto użytkownika na tym komputerze może odszyfrować zawartość obiektu poświadczeń. Wyeksportowany CLIXML plik nie może być używany na innym komputerze lub przez innego użytkownika.

W przykładzie plik, w którym są przechowywane poświadczenia, jest reprezentowany przez element TestScript.ps1.credential. Zastąp element TestScript nazwą skryptu, za pomocą którego ładujesz poświadczenia.

Obiekt poświadczeń można wysłać w dół potoku do Export-Clixml, a następnie zapisać go w ścieżce , $Credxmlpathokreślony w pierwszym poleceniu.

Aby automatycznie zaimportować poświadczenia do skryptu, uruchom dwa ostatnie polecenia. Uruchom polecenie , 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 zmienną PSCredential przy $Credential użyciu Get-Credential polecenia cmdlet . Następnie użyjemy polecenia Export-Clixml , aby zapisać poświadczenie 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. Pamiętaj, ż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.

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Accept pipeline input:False
Accept wildcard characters:False

-Depth

Określa, ile poziomów zawartych obiektów znajduje się 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.

Type:Int32
Position:Named
Default value:2
Accept pipeline input:False
Accept wildcard characters: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 dla 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 konsolowych.
  • 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 zamówienia bajtów (BOM)
  • utf32: Koduje w formacie UTF-32.

Począwszy od programu PowerShell 6.2, parametr kodowania umożliwia również identyfikatory liczbowe zarejestrowanych stron kodu (takich jak ) lub nazwy ciągów zarejestrowanych stron kodu (na przykład -Encoding 1251-Encoding "windows-1251"). Aby uzyskać więcej informacji, zobacz dokumentację platformy .NET dotyczącą pliku Encoding.CodePage.

Uwaga

UtF-7* nie jest już zalecane do użycia. Od programu PowerShell 7.1 jest napisane ostrzeżenie, jeśli zostanie określone utf7 dla parametru Kodowanie .

Type:Encoding
Accepted values:ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32
Position:Named
Default value:UTF8NoBOM
Accept pipeline input:False
Accept wildcard characters: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.

Type:SwitchParameter
Position:Named
Default value:False
Accept pipeline input:False
Accept wildcard characters: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-Clixmlobiektu .

Type:PSObject
Position:Named
Default value:None
Accept pipeline input:True
Accept wildcard characters:False

-LiteralPath

Określa ścieżkę do pliku, w którym będzie przechowywana reprezentacja XML obiektu. W przeciwieństwie do ścieżki, wartość 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 je ująć w pojedynczy cudzysłów. Znaki pojedynczego cudzysłowu informują program PowerShell, aby nie interpretował żadnych znaków jako sekwencji ucieczki.

Type:String
Aliases:PSPath, LP
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters: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ępuje plik bez ostrzeżenia.

Type:SwitchParameter
Aliases:NoOverwrite
Position:Named
Default value:False
Accept pipeline input:False
Accept wildcard characters:False

-Path

Określa ścieżkę do pliku, w którym będzie przechowywana reprezentacja XML obiektu.

Type:String
Position:0
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

-WhatIf

Pokazuje, co się stanie po uruchomieniu polecenia cmdlet. Polecenie cmdlet nie jest uruchamiane.

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Accept pipeline input:False
Accept wildcard characters:False

Dane wejściowe

PSObject

Dowolny obiekt można potokować do Export-Clixmlobiektu .

Dane wyjściowe

FileInfo

Export-Clixml tworzy plik zawierający kod XML.