Export-Clixml
创建一个或多个对象的基于 XML 的表示形式,并将其存储在文件中。
语法
Export-Clixml
[-Path] <String>
-InputObject <PSObject>
[-Depth <Int32>]
[-Force]
[-NoClobber]
[-Encoding <Encoding>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Export-Clixml
-LiteralPath <String>
-InputObject <PSObject>
[-Depth <Int32>]
[-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
字符串 “这是一个测试 ”在管道中向下发送。 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
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 格式进行编码。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 文档。
Type: | Encoding |
Accepted values: | ASCII, BigEndianUnicode, 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 的文件。