Aracılığıyla paylaş


Export-Clixml

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

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

Description

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

Bu cmdlet, ConvertTo-Xmlile benzerdir, ancak Export-Clixml sonuçta elde edilen XML dosyasını bir dosyada depolar. ConvertTo-Xml XML'yi döndürerek PowerShell'de işlemeye devam edebilirsiniz.

Windows bilgisayarlarda Export-Clixml değerli bir kullanımı, kimlik bilgilerini dışarı aktarmak ve dizeleri güvenli bir şekilde 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 ve bu, dizenin bir gösterimidir. Bu bir test.

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

This is a test dizesi işlem hattına gönderilir. Export-Clixml, geçerli dizinde adlı bir XML dosyası oluşturmak için sample.xml 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'i Test.txt dosyasının güvenlik tanımlayıcısını alır. güvenlik tanımlayıcısını Export-Clixmlgeçirmek için nesnesini işlem hattına gönderir. Nesnenin XML tabanlı gösterimi FileACL.xmladlı bir dosyada depolanır.

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

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

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

Ö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

Export-Clixml cmdlet'i Windows Veri Koruma API'sinikullanarak 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 dosyası farklı bir bilgisayarda veya farklı bir kullanıcı tarafından kullanılamaz.

Örnekte, kimlik bilgilerinin depolandığı dosya TestScript.ps1.credentialile temsil edilir. TestScript yerine kimlik bilgilerini yüklemekte olduğunuz betiğin adını yazın.

kimlik bilgisi nesnesini Export-Clixmliçin işlem hattının aşağısına gönderir ve ilk komutta belirttiğiniz $Credxmlpathyoluna kaydedersiniz.

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 Import-Clixml çalıştırın. 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 $Credential değişkeninde Get-Credential oluşturuyoruz. Ardından kimlik bilgilerini diske kaydetmek için Export-Clixml kullanırız.

Ö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 Get-Content çıktısı, XML dosyasındaki kimlik bilgilerine odaklanmak için kesilmiştir. Parolanın düz metin değerinin XML dosyasında, Format-Hextarafından kanıtlandığı gibi 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.

Tür:SwitchParameter
Diğer adlar:cf
Position:Named
Default value:False
Gerekli:False
İşlem hattı girişini kabul et:False
Joker karakterleri kabul et:False

-Depth

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

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

Tür:Int32
Position:Named
Default value:2
Gerekli:False
İşlem hattı girişini kabul et:False
Joker karakterleri kabul et:False

-Encoding

Hedef dosya için kodlama türünü belirtir. Varsayılan değer 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.
  • ansi: Geçerli kültürün ANSI kod sayfasının kodlamasını kullanır. Bu seçenek 7.4'te eklendi.
  • 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 Sırası İş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 sayısal kimliklerine (-Encoding 1251gibi) veya kayıtlı kod sayfalarının dize adlarına (-Encoding "windows-1251"gibi) de izin verir. Daha fazla bilgi için Encoding.CodePageiçin .NET belgelerine bakın.

PowerShell 7.4'den başlayarak, Ansi parametresinin değerini kullanarak geçerli kültürün ANSI kod sayfasının sayısal kimliğini el ile belirtmek zorunda kalmadan geçirebilirsiniz.

Not

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

Tür:Encoding
Kabul edilen değerler:ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32
Position:Named
Default value:UTF8NoBOM
Gerekli:False
İşlem hattı girişini kabul et:False
Joker karakterleri kabul et: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.

Tür:SwitchParameter
Position:Named
Default value:False
Gerekli:False
İşlem hattı girişini kabul et: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. Nesneleri Export-Clixml'e de yöneltebilirsiniz.

Tür:PSObject
Position:Named
Default value:None
Gerekli:True
İşlem hattı girişini kabul et:True
Joker karakterleri kabul et: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.

Tür:String
Diğer adlar:PSPath, LP
Position:Named
Default value:None
Gerekli:True
İşlem hattı girişini kabul et:False
Joker karakterleri kabul et: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ı olmadan dosyanın üzerine yazar.

Tür:SwitchParameter
Diğer adlar:NoOverwrite
Position:Named
Default value:False
Gerekli:False
İşlem hattı girişini kabul et:False
Joker karakterleri kabul et:False

-Path

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

Tür:String
Position:0
Default value:None
Gerekli:True
İşlem hattı girişini kabul et:False
Joker karakterleri kabul et:False

-WhatIf

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

Tür:SwitchParameter
Diğer adlar:wi
Position:Named
Default value:False
Gerekli:False
İşlem hattı girişini kabul et:False
Joker karakterleri kabul et: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.