Export-Clixml
Bir 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 nesne veya nesnenin Ortak Dil Altyapısı (CLI) XML tabanlı gösterimini oluşturur ve 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 ile benzerdir ConvertTo-Xml
, ancak Export-Clixml
sonuçta elde edilen XML dosyasını bir dosyada depolar. ConvertTo-XML
XML'yi döndürür, böylece PowerShell'de işlemeye devam edebilirsiniz.
Windows bilgisayarlarda kimlik bilgilerini ve güvenli dizeleri XML olarak güvenli bir şekilde dışarı aktarmak değerli bir kullanımıdır Export-Clixml
. Ö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 dizesinin gösterimidir.
"This is a test" | Export-Clixml -Path .\sample.xml
Dize This is a test
işlem hattına gönderilir. Export-Clixml
Geçerli dizinde adlı sample.xml
bir XML dosyası oluşturmak için Path parametresini kullanır.
Örnek 2: Nesneyi XML dosyasına aktarma
Bu örnek, bir nesneyi XML dosyasına aktarmayı ve sonra xml dosyasını içeri aktararak nesne oluşturmayı gösterir.
Get-Acl C:\test.txt | Export-Clixml -Path .\FileACL.xml
$fileacl = Import-Clixml -Path .\FileACL.xml
cmdlet'i Get-Acl
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ından Export-Clixml
aşağı gönderir. Nesnenin XML tabanlı gösterimi adlı FileACL.xml
bir dosyada depolanır.
cmdlet'i Import-Clixml
dosyadaki XML'den FileACL.xml
bir nesne oluşturur. Ardından nesnesini değişkenine $fileacl
kaydeder.
Örnek 3: Windows'da 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, biraz karartma 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.credential
temsil 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-Clixml
gönderir ve ilk komutta belirttiğiniz yola $Credxmlpath
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 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şkeninde $Credential
bir PSCredential oluşturuyoruz. 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, biraz karartma 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-Hex
kanı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. 2
varsayılan değerdir.
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. utf8NoBOM
varsayılan değerdir.
Bu parametre için kabul edilebilir değerler şunlardır:
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 Sipariş İşareti (BOM) ile UTF-8 biçiminde kodlarutf8NoBOM
: Bayt Sırası İşareti (BOM) olmadan UTF-8 biçiminde kodlarutf32
: 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 (örneğin -Encoding "windows-1251"
) izin verir. Daha fazla bilgi için Encoding.CodePage için .NET belgelerine bakın.
Not
UTF-7* uygulamasının 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ırlamayı dener.
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-Clixml
de yöneltebilirsiniz.
Type: | PSObject |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-LiteralPath
Nesnenin XML gösteriminin depolandığı 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 yazmadığı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 depolandığı 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
herhangi bir nesneyi ile işlem hattı oluşturabilirsiniz Export-Clixml
.
Çıkışlar
Export-Clixml
XML'yi içeren bir dosya oluşturur.