Bagikan melalui


Export-Clixml

Membuat representasi berbasis XML dari objek atau objek dan menyimpannya dalam file.

Sintaks

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

Deskripsi

Export-Clixml Cmdlet menserialisasikan objek ke dalam representasi berbasis XML Common Language Infrastructure (CLI) menyimpannya dalam file. Anda kemudian dapat menggunakan Import-Clixml cmdlet untuk membuat ulang objek yang disimpan berdasarkan konten file tersebut. Untuk informasi selengkapnya tentang CLI, lihat Kemandirian bahasa.

Cmdlet ini mirip ConvertTo-Xmldengan , kecuali yang menyimpan XML yang Export-Clixml dihasilkan dalam file. ConvertTo-XML mengembalikan XML, sehingga Anda dapat terus memprosesnya di PowerShell.

Penggunaan Export-Clixml berharga pada komputer Windows adalah mengekspor kredensial dan mengamankan string dengan aman sebagai XML. Misalnya, lihat Contoh 3.

Contoh

Contoh 1: Mengekspor string ke file XML

Contoh ini membuat file XML yang disimpan di direktori saat ini, representasi string Ini adalah pengujian.

"This is a test" | Export-Clixml -Path .\sample.xml

String This is a test dikirim ke alur. Export-Clixmlmenggunakan parameter Jalur untuk membuat file XML bernama sample.xml di direktori saat ini.

Contoh 2: Mengekspor objek ke file XML

Contoh ini memperlihatkan cara mengekspor objek ke file XML lalu membuat objek dengan mengimpor XML dari file.

Get-Acl C:\test.txt | Export-Clixml -Path .\FileACL.xml
$fileacl = Import-Clixml -Path .\FileACL.xml

Get-Acl Cmdlet mendapatkan pendeskripsi Test.txt keamanan file. Ini mengirimkan objek ke alur untuk meneruskan deskriptor keamanan ke Export-Clixml. Representasi berbasis XML dari objek disimpan dalam file bernama FileACL.xml.

Import-Clixml Cmdlet membuat objek dari XML dalam FileACL.xml file. Kemudian, ia menyimpan objek dalam $fileacl variabel.

Contoh 3: Mengenkripsi objek kredensial yang diekspor di Windows

Dalam contoh ini, diberi kredensial yang telah Anda simpan dalam $Credential variabel dengan menjalankan Get-Credential cmdlet, Anda dapat menjalankan Export-Clixml cmdlet untuk menyimpan kredensial ke disk.

Penting

Export-Clixml hanya mengekspor kredensial terenkripsi pada Windows. Pada sistem operasi non-Windows seperti macOS dan Linux, kredensial diekspor sebagai teks biasa yang disimpan sebagai array karakter Unicode. Ini menyediakan beberapa obfuscation tetapi tidak menyediakan enkripsi.

$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

Export-Clixml Cmdlet mengenkripsi objek kredensial dengan menggunakan API Perlindungan Data Windows. Enkripsi memastikan bahwa hanya akun pengguna Anda di komputer yang dapat mendekripsi konten objek kredensial. File yang diekspor CLIXML tidak dapat digunakan pada komputer lain atau oleh pengguna lain.

Dalam contoh, file tempat kredensial disimpan diwakili oleh TestScript.ps1.credential. Ganti TestScript dengan nama skrip tempat Anda memuat kredensial.

Anda mengirim objek kredensial ke bawah alur ke Export-Clixml, dan menyimpannya ke jalur, $Credxmlpath, yang Anda tentukan dalam perintah pertama.

Untuk mengimpor kredensial secara otomatis ke dalam skrip Anda, jalankan dua perintah akhir. Jalankan Import-Clixml untuk mengimpor objek kredensial aman ke dalam skrip Anda. Impor ini menghilangkan risiko mengekspos kata sandi teks biasa dalam skrip Anda.

Contoh 4: Mengekspor objek kredensial di Linux atau macOS

Dalam contoh ini, kami membuat PSCredential dalam $Credential variabel menggunakan Get-Credential cmdlet. Kemudian kita gunakan Export-Clixml untuk menyimpan kredensial ke disk.

Penting

Export-Clixml hanya mengekspor kredensial terenkripsi pada Windows. Pada sistem operasi non-Windows seperti macOS dan Linux, kredensial diekspor sebagai teks biasa yang disimpan sebagai array karakter Unicode. Ini menyediakan beberapa obfuscation tetapi tidak menyediakan enkripsi.

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

Output dalam Get-Content contoh ini telah dipotong untuk fokus pada informasi kredensial dalam file XML. Perhatikan bahwa nilai teks biasa kata sandi disimpan dalam file XML sebagai array karakter Unicode sebagaimana dibuktikan oleh Format-Hex. Jadi nilai dikodekan tetapi tidak dienkripsi.

Parameter

-Confirm

Meminta Anda mengonfirmasi sebelum menjalankan cmdlet.

Jenis:SwitchParameter
Alias:cf
Position:Named
Nilai default:False
Diperlukan:False
Terima input alur:False
Terima karakter wildcard:False

-Depth

Menentukan berapa banyak tingkat objek yang terkandung yang disertakan dalam representasi XML. Nilai defaultnya adalah 2.

Nilai default dapat diganti untuk jenis objek dalam Types.ps1xml file. Untuk informasi selengkapnya, lihat about_Types.ps1xml.

Jenis:Int32
Position:Named
Nilai default:2
Diperlukan:False
Terima input alur:False
Terima karakter wildcard:False

-Encoding

Menentukan jenis pengodean untuk file target. Nilai defaultnya adalah utf8NoBOM.

Nilai yang dapat diterima untuk parameter ini adalah sebagai berikut:

  • ascii: Menggunakan pengodean untuk set karakter ASCII (7-bit).
  • ansi: Menggunakan pengodean untuk halaman kode ANSI budaya saat ini. Opsi ini ditambahkan dalam 7.4.
  • bigendianunicode: Mengodekan dalam format UTF-16 menggunakan urutan byte big-endian.
  • bigendianutf32: Mengodekan dalam format UTF-32 menggunakan urutan byte big-endian.
  • oem: Menggunakan pengodean default untuk MS-DOS dan program konsol.
  • unicode: Mengodekan dalam format UTF-16 menggunakan urutan byte little-endian.
  • utf7: Mengodekan dalam format UTF-7.
  • utf8: Mengodekan dalam format UTF-8.
  • utf8BOM: Mengodekan dalam format UTF-8 dengan Byte Order Mark (BOM)
  • utf8NoBOM: Mengodekan dalam format UTF-8 tanpa Byte Order Mark (BOM)
  • utf32: Mengodekan dalam format UTF-32.

Dimulai dengan PowerShell 6.2, parameter Pengodean juga memungkinkan ID numerik halaman kode terdaftar (seperti -Encoding 1251) atau nama string halaman kode terdaftar (seperti -Encoding "windows-1251"). Untuk informasi selengkapnya, lihat dokumentasi .NET untuk Encoding.CodePage.

Dimulai dengan PowerShell 7.4, Anda dapat menggunakan Ansi nilai untuk parameter Pengodean untuk meneruskan ID numerik untuk halaman kode ANSI budaya saat ini tanpa harus menentukannya secara manual.

Catatan

UTF-7* tidak lagi disarankan untuk digunakan. Pada PowerShell 7.1, peringatan ditulis jika Anda menentukan utf7 untuk parameter Pengodean .

Jenis:Encoding
Nilai yang diterima:ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32
Position:Named
Nilai default:UTF8NoBOM
Diperlukan:False
Terima input alur:False
Terima karakter wildcard:False

-Force

Memaksa perintah untuk dijalankan tanpa meminta konfirmasi pengguna.

Menyebabkan cmdlet menghapus atribut baca-saja dari file output jika perlu. Cmdlet akan mencoba mengatur ulang atribut baca-saja saat perintah selesai.

Jenis:SwitchParameter
Position:Named
Nilai default:False
Diperlukan:False
Terima input alur:False
Terima karakter wildcard:False

-InputObject

Menentukan objek yang akan dikonversi. Masukkan variabel yang berisi objek, atau ketik perintah atau ekspresi yang mendapatkan objek. Anda juga dapat menyalurkan objek ke Export-Clixml.

Jenis:PSObject
Position:Named
Nilai default:None
Diperlukan:True
Terima input alur:True
Terima karakter wildcard:False

-LiteralPath

Menentukan jalur ke file tempat representasi XML objek akan disimpan. Tidak seperti Path, nilai parameter LiteralPath digunakan persis seperti yang ditik. Tidak ada karakter yang ditafsirkan sebagai kartubebas. Jika jalur menyertakan karakter escape, sertakan dalam tanda kutip tunggal. Tanda kutip tunggal memberi tahu PowerShell untuk tidak menginterpretasikan karakter apa pun sebagai urutan escape.

Jenis:String
Alias:PSPath, LP
Position:Named
Nilai default:None
Diperlukan:True
Terima input alur:False
Terima karakter wildcard:False

-NoClobber

Menunjukkan bahwa cmdlet tidak menimpa konten file yang ada. Secara default, jika file ada di jalur yang ditentukan, Export-Clixml timpa file tanpa peringatan.

Jenis:SwitchParameter
Alias:NoOverwrite
Position:Named
Nilai default:False
Diperlukan:False
Terima input alur:False
Terima karakter wildcard:False

-Path

Menentukan jalur ke file tempat representasi XML objek akan disimpan.

Jenis:String
Position:0
Nilai default:None
Diperlukan:True
Terima input alur:False
Terima karakter wildcard:False

-WhatIf

Menunjukkan apa yang akan terjadi jika cmdlet berjalan. Cmdlet tidak dijalankan.

Jenis:SwitchParameter
Alias:wi
Position:Named
Nilai default:False
Diperlukan:False
Terima input alur:False
Terima karakter wildcard:False

Input

PSObject

Anda dapat menyalurkan objek apa pun ke cmdlet ini.

Output

FileInfo

Cmdlet ini mengembalikan objek FileInfo yang mewakili file yang dibuat dengan data yang disimpan.