Export-Clixml

Nesnenin veya nesnelerin XML tabanlı bir gösterimini oluşturur ve bir dosyada depolar.

Syntax

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

Description

Cmdlet Export-Clixml bir nesneyi Ortak Dil Altyapısı (CLI) XML tabanlı bir gösterimde seri hale getirerek bir dosyada depolar. Ardından, kaydedilen nesneyi bu dosyanın içeriğine göre yeniden oluşturmak için cmdlet'ini kullanabilirsiniz Import-Clixml . CLI hakkında daha fazla bilgi için bkz . Dil bağımsızlığı.

Bu cmdlet, elde edilen XML'yi bir dosyada depolaması Export-Clixml dışında ile benzerdirConvertTo-Xml. ConvertTo-XML XML'yi döndürür, böylece PowerShell'de işlemeye devam edebilirsiniz.

Windows bilgisayarlarının değerli bir kullanımı Export-Clixml , kimlik bilgilerini ve güvenli dizeleri XML olarak güvenli bir şekilde dışarı aktarmaktır. Örnek için bkz. Örnek 3.

Örnekler

Örnek 1: Dizeyi XML dosyasına aktarma

Bu örnek, geçerli dizinde depolayan bir XML dosyası oluşturur. Bu bir testtir.

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

Dize This is a test işlem hattına gönderilir. Export-Clixmlgeçerli dizinde adlı sample.xml bir XML dosyası oluşturmak için Path parametresini kullanır.

Örnek 2: Nesneyi XML dosyasına dışarı aktarma

Bu örnekte bir nesnenin XML dosyasına nasıl dışarı aktarılacağını ve ardından xml dosyasını dosyadan içeri aktararak bir nesnenin nasıl oluşturulacağı gösterilmektedir.

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

Get-Acl Cmdlet dosyanın güvenlik tanımlayıcısını Test.txt alır. Güvenlik tanımlayıcısını öğesine geçirmek için nesnesini işlem hattına Export-Clixmlgönderir. Nesnesinin XML tabanlı gösterimi adlı FileACL.xmlbir dosyada depolanır.

Cmdlet, Import-Clixml dosyadaki XML'den FileACL.xml bir nesne oluşturur. Ardından, nesnesini değişkene $fileacl kaydeder.

Örnek 3: Windows'ta dışarı aktarılan bir kimlik bilgisi nesnesini şifreleme

Bu örnekte, cmdlet'ini çalıştırarak Get-Credential değişkende $Credential depoladığınız bir kimlik bilgisi verdiyseniz, kimlik bilgilerini diske kaydetmek için cmdlet'ini çalıştırabilirsinizExport-Clixml.

Önemli

Export-Clixml yalnızca Windows'ta şifrelenmiş kimlik bilgilerini dışarı aktarır. macOS ve Linux gibi Windows dışı işletim sistemlerinde kimlik bilgileri Unicode karakter dizisi olarak depolanan düz metin olarak dışarı aktarılır. Bu, bazı gizleme sağlar ancak şifreleme sağlamaz.

$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

cmdlet'i Export-Clixml Windows Veri Koruma API'sini kullanarak kimlik bilgisi nesnelerini şifreler. Şifreleme, yalnızca o bilgisayardaki kullanıcı hesabınızın kimlik bilgisi nesnesinin içeriğinin şifresini çözebilmesini sağlar. Dışarı aktarılan CLIXML dosya farklı bir bilgisayarda veya farklı bir kullanıcı tarafından kullanılamaz.

Örnekte, kimlik bilgilerinin depolandığı dosya ile TestScript.ps1.credentialtemsil edilir. TestScript'i, kimlik bilgilerini yüklemekte olduğunuz betiğin adıyla değiştirin.

kimlik bilgisi nesnesini işlem hattının aşağısına Export-Clixmlgönderir ve ilk komutta belirttiğiniz yola $Credxmlpathkaydedersiniz.

Kimlik bilgilerini betiğinize otomatik olarak aktarmak için son iki komutu çalıştırın. Güvenli kimlik bilgisi nesnesini betiğinize aktarmak için komutunu çalıştırın Import-Clixml . Bu içeri aktarma işlemi, betiğinizde düz metin parolaları ortaya çıkarma riskini ortadan kaldırır.

Örnek 4: Linux veya macOS'ta bir kimlik bilgisi nesnesini dışarı aktarma

Bu örnekte, cmdlet'ini kullanarak Get-Credential değişkende $Credential bir PSCredential oluştururuz. Ardından kimlik bilgilerini diske kaydetmek için kullanırız Export-Clixml .

Önemli

Export-Clixml yalnızca Windows'ta şifrelenmiş kimlik bilgilerini dışarı aktarır. macOS ve Linux gibi Windows dışı işletim sistemlerinde kimlik bilgileri Unicode karakter dizisi olarak depolanan düz metin olarak dışarı aktarılır. Bu, bazı gizleme sağlar ancak şifreleme sağlamaz.

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

Bu örnekteki çıktısı Get-Content , XML dosyasındaki kimlik bilgilerine odaklanmak için kesilmiştir. Parolanın düz metin değerinin XML dosyasında tarafından Format-Hexkanıtlandığı şekilde unicode karakter dizisi olarak depolandığını unutmayın. Bu nedenle değer kodlanır ancak şifrelenmez.

Parametreler

-Confirm

Cmdlet'i çalıştırmadan önce sizden onay ister.

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

-Depth

XML gösterimine kaç kapsanan nesne düzeyi eklendiğini belirtir. Varsayılan değer şudur: 2.

Dosyalardaki nesne türü Types.ps1xml için varsayılan değer geçersiz kılınabilir. Daha fazla bilgi için bkz . about_Types.ps1xml.

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

-Encoding

Hedef dosya için kodlama türünü belirtir. Varsayılan değer şudur: utf8NoBOM.

Bu parametre için kabul edilebilir değerler aşağıdaki gibidir:

  • ascii: ASCII (7 bit) karakter kümesi için kodlamayı kullanır.
  • bigendianunicode: Büyük endian bayt sırasını kullanarak UTF-16 biçiminde kodlar.
  • bigendianutf32: Büyük endian bayt sırasını kullanarak UTF-32 biçiminde kodlar.
  • oem: MS-DOS ve konsol programları için varsayılan kodlamayı kullanır.
  • unicode: Little-endian bayt sırasını kullanarak UTF-16 biçiminde kodlar.
  • utf7: UTF-7 biçiminde kodlar.
  • utf8: UTF-8 biçiminde kodlar.
  • utf8BOM: Bayt Sırası İşareti (BOM) ile UTF-8 biçiminde kodlar
  • utf8NoBOM: Bayt Sipariş İşareti (BOM) olmadan UTF-8 biçiminde kodlar
  • utf32: UTF-32 biçiminde kodlar.

PowerShell 6.2'den başlayarak Kodlama parametresi, kayıtlı kod sayfalarının (gibi-Encoding 1251) sayısal kimliklerine veya kayıtlı kod sayfalarının dize adlarına da (gibi-Encoding "windows-1251") izin verir. Daha fazla bilgi için Encoding.CodePage için .NET belgelerine bakın.

Not

UTF-7* artık kullanılması önerilmez. PowerShell 7.1'den itibaren Kodlama parametresini belirtirseniz utf7 bir uyarı yazılır.

Type:Encoding
Accepted values:ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32
Position:Named
Default value:UTF8NoBOM
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Force

Komutu, kullanıcı onayı istemeden çalışmaya zorlar.

Gerekirse cmdlet'in çıkış dosyasının salt okunur özniteliğini temizlemesine neden olur. Komut tamamlandığında cmdlet salt okunur özniteliğini sıfırlamaya çalışır.

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

-InputObject

Dönüştürülecek nesneyi belirtir. Nesneleri içeren bir değişken girin veya nesneleri alan bir komut veya ifade yazın. Nesneleri öğesine Export-Clixmlde yöneltebilirsiniz.

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

-LiteralPath

Nesnenin XML gösteriminin depolanacağı dosyanın yolunu belirtir. Path'in aksine, LiteralPath parametresinin değeri tam olarak yazıldığı gibi kullanılır. Hiçbir karakter joker karakter olarak yorumlanmamıştır. Yol kaçış karakterleri içeriyorsa, tek tırnak içine alın. Tek tırnak işaretleri PowerShell'e hiçbir karakteri kaçış dizisi olarak yorumlamaması gerektiğini söyler.

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

-NoClobber

Cmdlet'in var olan bir dosyanın içeriğinin üzerine yazılmadığını gösterir. Varsayılan olarak, belirtilen yolda bir dosya varsa, Export-Clixml uyarı vermeden dosyanın üzerine yazar.

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

-Path

Nesnenin XML gösteriminin depolanacağı dosyanın yolunu belirtir.

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

-WhatIf

Cmdlet çalıştırılıyorsa ne olacağını gösterir. Cmdlet çalıştırılmıyor.

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

Girişler

PSObject

Herhangi bir nesneyi bu cmdlet'e işlem hattıyla geçirebilirsiniz.

Çıkışlar

FileInfo

Bu cmdlet, depolanan verilerle oluşturulan dosyayı temsil eden bir FileInfo nesnesi döndürür.