Export-Clixml (Microsoft.PowerShell.Utility)


Export-Clixml

Modül:
Microsoft.PowerShell.Utility

Bir nesnenin veya nesnelerin XML tabanlı temsilini oluşturur ve bunu bir dosyada saklar.

Sözdizimi

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

Tanım

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

Bu cmdlet, Export-Clixml'in elde edilen XML'i bir dosyada saklaması dışında ConvertTo-Xml'e benzer. ConvertTo-XML XML'i döndürür, böylece onu PowerShell'de işlemeye devam edebilirsiniz.

Windows bilgisayarlarda Export-Clixml'in değerli bir kullanımı, kimlik bilgilerini dışa aktarmak ve dizeleri XML olarak güvenli bir şekilde korumaktır. Bir örnek için Örnek 3'e bakınız.

Örnekler

Örnek 1: Bir dizeyi XML dosyasına aktarma

Bu örnek, geçerli dizinde depolanan ve Bu bir test dizesinin temsili olan bir XML dosyası oluşturur.

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

Bu bir test dizesi ardışık düzene gönderilir. Export-Clixml, geçerli dizinde sample.xml adlı bir XML dosyası oluşturmak için Path parametresini kullanır.

Örnek 2: Bir nesneyi XML dosyasına aktarma

Bu örnek, bir nesnenin bir XML dosyasına nasıl aktarılacağını ve ardından XML'i dosyadan içe aktararak bir nesnenin nasıl oluşturulacağını gösterir.

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

Get-Acl cmdlet'i Test.txt dosyasının güvenlik tanımlayıcısını alır. Güvenlik tanımlayıcısını Export-Clixml'e iletmek için nesneyi ardışık düzene gönderir. Nesnenin XML tabanlı gösterimi FileACL.xml adlı bir dosyada saklanır.

Import-Clixml cmdlet'i, FileACL.xml dosyasındaki XML'den bir nesne oluşturur. Daha sonra nesneyi $fileacl değişkenine kaydeder.

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

Bu örnekte, Get-Credential cmdlet'ini çalıştırarak $Credential değişkeninde sakladığınız bir kimlik bilgisi verildiğinde, Export-Clixml<'i çalıştırabilirsiniz. Kimlik bilgilerini diske kaydetmek için /code> cmdlet'i.

Bu önemli

Export-Clixml yalnızca Windows'ta şifrelenmiş kimlik bilgilerini dışa aktarır. MacOS ve Linux gibi Windows olmayan işletim sistemlerinde kimlik bilgileri, Unicode karakter dizisi olarak depolanan düz metin olarak dışarı aktarılır. Bu, bir miktar 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

Export-Clixml cmdlet'i, 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ışa aktarılan CLIXML dosyası farklı bir bilgisayarda veya farklı bir kullanıcı tarafından kullanılamaz.

Örnekte, kimlik bilgilerinin saklandığı dosya TestScript.ps1.credential ile temsil edilmektedir. TestScript'i, kimlik bilgilerini yüklediğiniz betiğin adıyla değiştirin.

Kimlik bilgisi nesnesini işlem hattından Export-Clixml'e gönderirsiniz ve onu ilk komutta belirttiğiniz $Credxmlpath yoluna kaydedersiniz.

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

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

Bu örnekte, Get-Credential cmdlet'ini kullanarak $Credential değişkeninde bir PSCredential oluşturuyoruz. Daha sonra kimlik bilgilerini diske kaydetmek için Export-Clixml komutunu kullanırız.

Bu önemli

Export-Clixml yalnızca Windows'ta şifrelenmiş kimlik bilgilerini dışa aktarır. MacOS ve Linux gibi Windows olmayan işletim sistemlerinde kimlik bilgileri, Unicode karakter dizisi olarak depolanan düz metin olarak dışarı aktarılır. Bu, bir miktar 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 Get-Content çıktısı, XML dosyasındaki kimlik bilgilerine odaklanmak için kısaltılmıştır. Parolanın düz metin değerinin XML dosyasında Format-Hex tarafından kanıtlandığı gibi bir Unicode karakter dizisi olarak saklandığını unutmayın. Yani değer kodlanmıştır ancak şifrelenmemiştir.

Parametreler

-Confirm

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

Tip :

SwitchParameter

Takma adlar:

cf

Konum:

Adlandırılmış

Varsayılan değer:

False

Gerekli:

False

Boru hattı girişini kabul edin:

False

Joker karakterleri kabul et:

False

-Depth

XML gösterimine kaç düzeyde içerilen nesnenin dahil edildiğini belirtir. Varsayılan değer 2'dir.

Types.ps1xml dosyalarındaki nesne türü için varsayılan değer geçersiz kılınabilir. Daha fazla bilgi için about_Types.ps1xml'e bakın.

Tip :

Int32

Konum:

Adlandırılmış

Varsayılan değer:

2

Gerekli:

False

Boru hattı girişini kabul edin:

False

Joker karakterleri kabul et:

False

-Encoding

Hedef dosyanın kodlama türünü belirtir. Varsayılan değer utf8NoBOM'dur.

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

  • ascii: ASCII (7 bit) karakter kümesinin kodlamasını kullanır.
  • ansi: Geçerli kültürün ANSI kod sayfası için kodlamayı kullanır. Bu seçenek 7.4'te eklendi.
  • bigendianunicode: Big-endian bayt sırasını kullanarak UTF-16 biçiminde kodlar.
  • bigendianutf32: Big-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 formatında kodlar.
  • utf8: UTF-8 formatında kodlar.
  • utf8BOM: Bayt Sırası İşareti (BOM) ile UTF-8 formatında kodlar
  • utf8NoBOM: Bayt Sırası İşareti (BOM) olmadan UTF-8 biçiminde kodlar
  • utf32: UTF-32 formatında kodlar.

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

PowerShell 7,4'ten başlayarak, geçerli kültürün ANSI kod sayfasının sayısal kimliğini manuel olarak belirtmek zorunda kalmadan iletmek için Encoding parametresi için Ansi değerini kullanabilirsiniz.

Not

UTF-7*'nin kullanılması artık önerilmemektedir. PowerShell 7.1'den itibaren Encoding parametresi için utf7 belirtirseniz bir uyarı yazılır.

Tip :

Kodlama

Kabul edilen değerler:

ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32

Konum:

Adlandırılmış

Varsayılan değer:

UTF8NoBOM

Gerekli:

False

Boru hattı girişini kabul edin:

False

Joker karakterleri kabul et:

False

-Force

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

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

Tip :

SwitchParameter

Konum:

Adlandırılmış

Varsayılan değer:

False

Gerekli:

False

Boru hattı girişini kabul edin:

False

Joker karakterleri kabul et:

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. Ayrıca nesneleri Export-Clixml'e yönlendirebilirsiniz.

Tip :

PSObject

Konum:

Adlandırılmış

Varsayılan değer:

None

Gerekli:

True

Boru hattı girişini kabul edin:

True

Joker karakterleri kabul et:

False

-LiteralPath

Nesnenin XML temsilinin saklanacağı dosyanın yolunu belirtir. Path'ten farklı olarak LiteralPath parametresinin değeri tam olarak yazıldığı gibi kullanılır. Hiçbir karakter joker karakter olarak yorumlanmaz. Yol kaçış karakterleri içeriyorsa, onu tek tırnak işaretleri içine alın. Tek tırnak işaretleri PowerShell'e hiçbir karakteri kaçış dizisi olarak yorumlamamasını söyler.

Tip :

String

Takma adlar:

PSPath, LP

Konum:

Adlandırılmış

Varsayılan değer:

None

Gerekli:

True

Boru hattı girişini kabul edin:

False

Joker karakterleri kabul et:

False

-NoClobber

Cmdlet'in mevcut bir dosyanın içeriğinin üzerine yazmadığını belirtir. Varsayılan olarak, belirtilen yolda bir dosya mevcutsa, Export-Clixml herhangi bir uyarıda bulunmadan dosyanın üzerine yazar.

Tip :

SwitchParameter

Takma adlar:

NoOverwrite

Konum:

Adlandırılmış

Varsayılan değer:

False

Gerekli:

False

Boru hattı girişini kabul edin:

False

Joker karakterleri kabul et:

False

-Path

Nesnenin XML temsilinin saklanacağı dosyanın yolunu belirtir.

Tip :

String

Konum:

0

Varsayılan değer:

None

Gerekli:

True

Boru hattı girişini kabul edin:

False

Joker karakterleri kabul et:

False

-WhatIf

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

Tip :

SwitchParameter

Takma adlar:

wi

Konum:

Adlandırılmış

Varsayılan değer:

False

Gerekli:

False

Boru hattı girişini kabul edin:

False

Joker karakterleri kabul et:

False

Girişler

PSObject

Bu cmdlet'e herhangi bir nesneyi ardışık düzenleyebilirsiniz.

Çıkışlar

DosyaBilgileri

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

İlgili makaleler