Export-Clixml
创建对象或对象的基于 XML 的表示形式,并将其存储在文件中。
语法
		ByPath (默认值)
	 
	Export-Clixml
    [-Path] <String>
    -InputObject <PSObject>
    [-Depth <Int32>]
    [-Force]
    [-NoClobber]
    [-Encoding <Encoding>]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]
		ByLiteralPath
	  
	Export-Clixml
    -LiteralPath <String>
    -InputObject <PSObject>
    [-Depth <Int32>]
    [-Force]
    [-NoClobber]
    [-Encoding <Encoding>]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]
说明
              Export-Clixml cmdlet 将对象序列化为基于公共语言基础结构 (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
              Get-Acl cmdlet 获取 Test.txt 文件的安全描述符。 它将对象向下发送管道,以将安全描述符传递给 Export-Clixml。 对象的基于 XML 的表示形式存储在名为 FileACL.xml的文件中。
              Import-Clixml cmdlet 从 FileACL.xml 文件中的 XML 创建对象。 然后,它将对象保存在 $fileacl 变量中。
示例 3:加密 Windows 上导出的凭据对象
在此示例中,如果您已通过运行 $Credential cmdlet 将凭据存储在 Get-Credential 变量中,则可以运行 Export-Clixml cmdlet 将该凭据保存到磁盘。
重要
              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
              Export-Clixml cmdlet 使用 Windows 数据保护 API来加密凭据对象。 加密可确保只有该计算机上的用户帐户才能解密凭据对象的内容。
导出 CLIXML 文件不能在不同的计算机上或其他用户使用。
在此示例中,存储凭据的文件由 TestScript.ps1.credential表示。 将 TestScript 替换为脚本名称,可使用该脚本加载凭据。
将凭据对象向下发送到管道 Export-Clixml,并将其保存到在第一个命令中指定的路径 $Credxmlpath。
若要将凭据自动导入脚本,请运行最后两个命令。 运行 Import-Clixml 将安全凭据对象导入脚本。 此导入消除了在脚本中公开纯文本密码的风险。
示例 4:在 Linux 或 macOS 上导出凭据对象
在此示例中,我们使用  cmdlet 在 $Credential 变量中创建 Get-Credential。 然后使用 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 之前,提示你进行确认。
参数属性
| 类型: | SwitchParameter | 
| 默认值: | False | 
| 支持通配符: | False | 
| 不显示: | False | 
| 别名: | cf | 
参数集
(All)
| Position: | Named | 
| 必需: | False | 
| 来自管道的值: | False | 
| 来自管道的值(按属性名称): | False | 
| 来自剩余参数的值: | False | 
-Depth
指定 XML 表示形式中包含多少个包含对象的级别。 默认值是 2。
可以为 Types.ps1xml 文件中的对象类型重写默认值。 有关详细信息,请参阅 about_Types.ps1xml。
参数属性
| 类型: | Int32 | 
| 默认值: | 2 | 
| 支持通配符: | False | 
| 不显示: | False | 
参数集
(All)
| Position: | Named | 
| 必需: | False | 
| 来自管道的值: | False | 
| 来自管道的值(按属性名称): | False | 
| 来自剩余参数的值: | False | 
-Encoding
指定目标文件的编码类型。 默认值是 utf8NoBOM。
此参数的可接受值如下所示:
- 
              ascii:对 ASCII(7 位)字符集使用编码。
- 
              ansi:对当前区域性的 ANSI 代码页使用编码。 此选项已在 7.4 中添加。
- 
              bigendianunicode:使用大端字节序以 UTF-16 格式进行编码。
- 
              bigendianutf32:使用大端字节顺序以 UTF-32 格式进行编码。
- 
              oem:对 MS-DOS 和控制台程序使用默认编码。
- 
              unicode:使用小端字节序以 UTF-16 格式进行编码。
- 
              utf7:采用 UTF-7 格式编码。
- 
              utf8:采用 UTF-8 格式编码。
- 
              utf8BOM:以 UTF-8 格式编码并附加字节顺序标记(BOM)
- 
              utf8NoBOM:采用不带字节顺序标记(BOM)的 UTF-8 格式进行编码。
- 
              utf32:采用 UTF-32 格式编码。
从 PowerShell 6.2 开始,编码参数 还允许使用注册代码页的数字 ID(如 -Encoding 1251)或注册代码页的字符串名称(如 -Encoding "windows-1251")。 有关详细信息,请参阅 Encoding.CodePage.NET 文档。
从 PowerShell 7.4 开始,可以使用 Ansi 参数的  值来传递当前区域性 ANSI 代码页的数字 ID,而无需手动指定它。
注释
              UTF-7* 不再推荐使用。 从 PowerShell 7.1 起,如果为 utf7 参数指定 ,则会编写警告。
参数属性
| 类型: | Encoding | 
| 默认值: | UTF8NoBOM | 
| 接受的值: | ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 | 
| 支持通配符: | False | 
| 不显示: | False | 
参数集
(All)
| Position: | Named | 
| 必需: | False | 
| 来自管道的值: | False | 
| 来自管道的值(按属性名称): | False | 
| 来自剩余参数的值: | False | 
-Force
强制命令运行而不要求用户确认。
使 cmdlet 在必要时清除输出文件的只读属性。 该 cmdlet 将在命令完成时尝试重置只读属性。
参数属性
| 类型: | SwitchParameter | 
| 默认值: | False | 
| 支持通配符: | False | 
| 不显示: | False | 
参数集
(All)
| Position: | Named | 
| 必需: | False | 
| 来自管道的值: | False | 
| 来自管道的值(按属性名称): | False | 
| 来自剩余参数的值: | False | 
-InputObject 
		指定要转换的对象。 输入包含对象的变量,或键入获取对象的命令或表达式。 还可以通过管道将对象传递给 Export-Clixml。
参数属性
| 类型: | PSObject | 
| 默认值: | None | 
| 支持通配符: | False | 
| 不显示: | False | 
参数集
(All)
| Position: | Named | 
| 必需: | True | 
| 来自管道的值: | True | 
| 来自管道的值(按属性名称): | False | 
| 来自剩余参数的值: | False | 
-LiteralPath 
		指定将存储对象的 XML 表示形式的文件的路径。 与 Path不同,LiteralPath 参数的值按输入原样使用。 不会将任何字符解释为通配符。 如果路径包含转义字符,请将它括在单引号中。 单引号告知 PowerShell 不要将任何字符解释为转义序列。
参数属性
| 类型: | String | 
| 默认值: | None | 
| 支持通配符: | False | 
| 不显示: | False | 
| 别名: | PSPath, LP | 
参数集
					ByLiteralPath 
					
				  
				| Position: | Named | 
| 必需: | True | 
| 来自管道的值: | False | 
| 来自管道的值(按属性名称): | False | 
| 来自剩余参数的值: | False | 
-NoClobber 
		指示 cmdlet 不会覆盖现有文件的内容。 默认情况下,如果指定路径中存在文件,Export-Clixml 覆盖该文件而不发出警告。
参数属性
| 类型: | SwitchParameter | 
| 默认值: | False | 
| 支持通配符: | False | 
| 不显示: | False | 
| 别名: | NoOverwrite | 
参数集
(All)
| Position: | Named | 
| 必需: | False | 
| 来自管道的值: | False | 
| 来自管道的值(按属性名称): | False | 
| 来自剩余参数的值: | False | 
-Path
指定将存储对象的 XML 表示形式的文件的路径。
参数属性
| 类型: | String | 
| 默认值: | None | 
| 支持通配符: | False | 
| 不显示: | False | 
参数集
					ByPath 
					
				 
				| Position: | 0 | 
| 必需: | True | 
| 来自管道的值: | False | 
| 来自管道的值(按属性名称): | False | 
| 来自剩余参数的值: | False | 
-WhatIf 
		显示 cmdlet 运行时会发生什么情况。 cmdlet 未能运行。
参数属性
| 类型: | SwitchParameter | 
| 默认值: | False | 
| 支持通配符: | False | 
| 不显示: | False | 
| 别名: | 无线 | 
参数集
(All)
| Position: | Named | 
| 必需: | False | 
| 来自管道的值: | False | 
| 来自管道的值(按属性名称): | False | 
| 来自剩余参数的值: | False | 
CommonParameters
此 cmdlet 支持通用参数:-Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction 和 -WarningVariable。 有关详细信息,请参阅 about_CommonParameters。
输入
PSObject
可以将任何对象管道传递给此 cmdlet。
输出
FileInfo
此 cmdlet 返回一个 FileInfo 对象,该对象代表使用存储的数据创建的文件。