Import-Clixml

Mengimpor file CLIXML dan membuat objek terkait di PowerShell.

Sintaks

Import-Clixml
      [-Path] <String[]>
      [-IncludeTotalCount]
      [-Skip <UInt64>]
      [-First <UInt64>]
      [<CommonParameters>]
Import-Clixml
      -LiteralPath <String[]>
      [-IncludeTotalCount]
      [-Skip <UInt64>]
      [-First <UInt64>]
      [<CommonParameters>]

Deskripsi

Import-Clixml Cmdlet mengimpor objek yang telah diserialisasikan ke dalam file XML Common Language Infrastructure (CLI). Penggunaan Import-Clixml berharga pada komputer Windows adalah mengimpor kredensial dan string aman yang diekspor sebagai XML aman menggunakan Export-Clixml. Contoh #2 menunjukkan cara menggunakan Import-Clixml untuk mengimpor objek kredensial yang aman.

Data CLIXML dideserialisasi kembali ke objek PowerShell. Namun, objek yang dideserialisasi bukan objek langsung. Mereka adalah rekam jepret objek pada saat serialisasi. Objek yang dideserialisasi mencakup properti tetapi tidak ada metode.

Properti TypeNames berisi nama jenis asli yang diawali dengan Deserialized. Contoh #3 memperlihatkan properti TypeNames dari objek yang dideserialisasi.

Import-Clixml menggunakan byte-order-mark (BOM) untuk mendeteksi format pengodean file. Jika file tidak memiliki BOM, diasumsikan pengodeannya adalah UTF8.

Untuk informasi selengkapnya tentang CLI, lihat Kemandirian bahasa.

Contoh

Contoh 1: Mengimpor file berseri dan membuat ulang objek

Contoh ini menggunakan Export-Clixml cmdlet untuk menyimpan salinan berseri informasi proses yang dikembalikan oleh Get-Process. Import-Clixml mengambil konten file serial dan membuat ulang objek yang disimpan dalam $Processes variabel.

Get-Process | Export-Clixml -Path .\pi.xml
$Processes = Import-Clixml -Path .\pi.xml

Contoh 2: Mengimpor objek kredensial aman

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 dalam teks biasa.

$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 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 3: Periksa properti TypeNames dari objek yang dideserialisasi

Contoh ini menunjukkan mengimpor objek yang disimpan sebagai data CLIXML. Data dideserialisasi kembali ke objek PowerShell. Namun, objek yang dideserialisasi bukan objek langsung. Mereka adalah rekam jepret objek pada saat serialisasi. Objek yang dideserialisasi mencakup properti tetapi tidak ada metode.

$original = [pscustomobject] @{
    Timestamp = Get-Date
    Label     = 'Meeting event'
}
$original | Add-Member -MemberType ScriptMethod -Name GetDisplay -Value {
    '{0:yyyy-MM-dd HH:mm} {1}' -f $this.Timestamp, $this.Label
}
$original | Get-Member -MemberType ScriptMethod

TypeName: System.Management.Automation.PSCustomObject

Name        MemberType   Definition
----        ----------   ----------
Equals      Method       bool Equals(System.Object obj)
GetHashCode Method       int GetHashCode()
GetType     Method       type GetType()
ToString    Method       string ToString()
Label       NoteProperty string Label=Meeting event
Timestamp   NoteProperty System.DateTime Timestamp=1/31/2024 2:27:59 PM
GetDisplay  ScriptMethod System.Object GetDisplay();

$original | Export-Clixml -Path event.clixml
$deserialized = Import-CliXml -Path event.clixml
$deserialized | Get-Member

TypeName: Deserialized.System.Management.Automation.PSCustomObject

Name        MemberType   Definition
----        ----------   ----------
Equals      Method       bool Equals(System.Object obj)
GetHashCode Method       int GetHashCode()
GetType     Method       type GetType()
ToString    Method       string ToString()
Label       NoteProperty string Label=Meeting event
Timestamp   NoteProperty System.DateTime Timestamp=1/31/2024 2:27:59 PM

Perhatikan bahwa jenis objek di $original adalah System.Management.Automation.PSCustomObject, tetapi jenis objek di $deserialized adalah Deserialized.System.Management.Automation.PSCustomObject. Selain itu GetDisplay() , metode hilang dari objek yang dideserialisasi.

Parameter

-First

Hanya mendapatkan jumlah objek yang ditentukan. Masukkan jumlah objek yang akan didapatkan.

Type:UInt64
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-IncludeTotalCount

Melaporkan jumlah total objek dalam himpunan data diikuti oleh objek yang dipilih. Jika cmdlet tidak dapat menentukan jumlah total, cmdlet akan menampilkan Jumlah total yang tidak diketahui. Bilangan bulat memiliki properti Akurasi yang menunjukkan keandalan nilai jumlah total. Nilai Akurasi berkisar dari 0.0 ke 1.0 mana 0.0 berarti bahwa cmdlet tidak dapat menghitung objek, 1.0 berarti bahwa jumlahnya tepat, dan nilai antara 0.0 dan 1.0 menunjukkan perkiraan yang semakin dapat diandalkan.

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

-LiteralPath

Menentukan jalur ke file XML. 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.

Type:String[]
Aliases:PSPath, LP
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Path

Menentukan jalur ke file XML.

Type:String[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Skip

Mengabaikan jumlah objek yang ditentukan lalu mendapatkan objek yang tersisa. Masukkan jumlah objek yang akan dilewati.

Type:UInt64
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Input

String

Anda dapat menyalurkan string yang berisi jalur ke cmdlet ini.

Output

PSObject

Cmdlet ini mengembalikan objek yang dideserialisasi dari file XML yang disimpan.

Catatan

Saat menentukan beberapa nilai untuk parameter, gunakan koma untuk memisahkan nilai. Contohnya,<parameter-name> <value1>, <value2>.