Export-Clixml
创建一个或多个对象的基于 XML 的表示形式,并将其存储在文件中。
语法
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>]
说明
cmdlet Export-Clixml
创建一个公共语言基础结构 (CLI) 一个或多个对象的基于 XML 的表示形式,并将其存储在文件中。 然后, Import-Clixml
可以使用 cmdlet 根据该文件的内容重新创建保存的对象。
有关 CLI 的详细信息,请参阅 语言独立性。
此 cmdlet 类似于 ConvertTo-Xml
,只是将 Export-Clixml
生成的 XML 存储在文件中。 ConvertTo-XML
返回 XML,因此你可以继续在 PowerShell 中处理它。
在 Windows 计算机上, 的 Export-Clixml
一个有价值的用途是将凭据和安全字符串安全地导出为 XML。 有关示例,请参阅示例 3。
示例
示例 1:将字符串导出到 XML 文件
此示例创建一个 XML 文件,该文件存储在当前目录中,这是 一个测试字符串的表示形式。
"This is a test" | Export-Clixml -Path .\sample.xml
字符串 This is a test
在管道中向下发送。 Export-Clixml
使用 Path 参数在当前目录中创建名为 sample.xml
的 XML 文件。
示例 2:将对象导出到 XML 文件
此示例演示如何将对象导出到 XML 文件,然后通过从该文件导入 XML 来创建对象。
Get-Acl C:\test.txt | Export-Clixml -Path .\FileACL.xml
$fileacl = Import-Clixml -Path .\FileACL.xml
cmdlet Get-Acl
获取文件的安全描述符 Test.txt
。 它将对象发送到管道,以将安全描述符传递给 Export-Clixml
。 对象的基于 XML 的表示形式存储在名为 的 FileACL.xml
文件中。
cmdlet Import-Clixml
根据 文件中的 XML FileACL.xml
创建对象。 然后,它将 对象保存在 变量中 $fileacl
。
示例 3:在 Windows 上加密导出的凭据对象
在此示例中,给定通过运行 Get-Credential
cmdlet 存储在 变量中的$Credential
凭据,可以运行 cmdlet Export-Clixml
将凭据保存到磁盘。
重要
Export-Clixml
仅导出 Windows 上的加密凭据。 在非 Windows 操作系统(如 macOS 和 Linux)上,凭据将导出为纯文本,并存储为 Unicode 字符数组。 这提供了一些模糊处理,但不提供加密。
$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 Export-Clixml
使用 Windows 数据保护 API 加密凭据对象。 加密可确保只有该计算机上的用户帐户才能解密凭据对象的内容。
导出 CLIXML
的文件不能用于其他计算机或其他用户。
在示例中,存储凭据的文件由 TestScript.ps1.credential
表示。 将 TestScript 替换为要加载凭据的脚本的名称。
将凭据对象向下发送到 Export-Clixml
管道, $Credxmlpath
并将其保存到在第一个命令中指定的路径 。
若要将凭据自动导入脚本,请运行最后两个命令。 运行 Import-Clixml
以将安全凭据对象导入脚本。 此导入消除了在脚本中公开纯文本密码的风险。
示例 4:在 Linux 或 macOS 上导出凭据对象
在此示例中,我们使用 cmdlet 在 $Credential
变量Get-Credential
中创建 PSCredential。 Export-Clixml
然后使用 将凭据保存到磁盘。
重要
Export-Clixml
仅导出 Windows 上的加密凭据。 在非 Windows 操作系统(如 macOS 和 Linux)上,凭据将导出为纯文本,并存储为 Unicode 字符数组。 这提供了一些模糊处理,但不提供加密。
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
此示例中的 输出 Get-Content
已被截断,以专注于 XML 文件中的凭据信息。 请注意,密码的纯文本值作为 Unicode 字符数组存储在 XML 文件中,由 Format-Hex
验证。 因此,该值已编码,但未加密。
参数
-Confirm
提示你在运行 cmdlet 之前进行确认。
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Depth
指定 XML 表示形式中所包含的包含对象的级别数。 默认值为 2
。
可以为文件中的对象类型 Types.ps1xml
重写默认值。 有关详细信息,请参阅 about_Types.ps1xml。
Type: | Int32 |
Position: | Named |
Default value: | 2 |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Encoding
指定目标文件的编码类型。 默认值为 utf8NoBOM
。
此参数的可接受值如下所示:
ascii
:使用 ASCII (7 位) 字符集的编码。bigendianunicode
:使用 big-endian 字节顺序以 UTF-16 格式进行编码。bigendianutf32
:使用 big-endian 字节顺序以 UTF-32 格式进行编码。oem
:使用 MS-DOS 和控制台程序的默认编码。unicode
:使用 little-endian 字节顺序以 UTF-16 格式进行编码。utf7
:以 UTF-7 格式进行编码。utf8
:以 UTF-8 格式进行编码。utf8BOM
:使用字节顺序标记 (BOM) 以 UTF-8 格式进行编码utf8NoBOM
:以 UTF-8 格式编码,不带字节顺序标记 (BOM)utf32
:以 UTF-32 格式进行编码。
从 PowerShell 6.2 开始, Encoding 参数还允许使用已注册代码页的数字 ID (如 -Encoding 1251
) 或已注册代码页的字符串名称 () -Encoding "windows-1251"
。 有关详细信息,请参阅 Encoding.CodePage 的 .NET 文档。
注意
不再建议使用 UTF-7*。 从 PowerShell 7.1 起,如果为 Encoding 参数指定utf7
,则会写入警告。
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
强制运行命令而不要求用户确认。
使该 cmdlet 清除输出文件的只读属性(如有必要)。 该 cmdlet 将在命令完成时尝试重置只读属性。
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InputObject
指定要转换的对象。 输入一个包含对象的变量,或键入可获取对象的命令或表达式。 还可以通过管道将对象传递给 Export-Clixml
。
Type: | PSObject |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-LiteralPath
指定指向将存储对象的 XML 表示形式的文件的路径。 与 Path 不同, LiteralPath 参数的值与键入时完全相同。 不会将任何字符解释为通配符。 如果路径包括转义符,请将其括在单引号中。 单引号告知 PowerShell 不要将任何字符解释为转义序列。
Type: | String |
Aliases: | PSPath, LP |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-NoClobber
指示 cmdlet 不会覆盖现有文件的内容。 默认情况下,如果文件存在于指定路径中, Export-Clixml
则覆盖该文件而不发出警告。
Type: | SwitchParameter |
Aliases: | NoOverwrite |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Path
指定指向将存储对象的 XML 表示形式的文件的路径。
Type: | String |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-WhatIf
显示运行该 cmdlet 时会发生什么情况。 cmdlet 未运行。
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
输入
可以将任何对象管道传递给 Export-Clixml
。
输出
Export-Clixml
创建一个包含 XML 的文件。