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.xmlGet-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 $CredxmlpathExport-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 dBu ö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 kodlarutf8NoBOM: Bayt Sırası İşareti (BOM) olmadan UTF-8 biçiminde kodlarutf32: 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.