Export-Clixml
Crea una representación basada en XML de un objeto u objetos y la almacena en un archivo.
Sintaxis
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
El cmdlet Export-Clixml
serializó un objeto en una representación basada en XML de Common Language Infrastructure (CLI) que lo almacena en un archivo. A continuación, puede usar el cmdlet Import-Clixml
para volver a crear el objeto guardado en función del contenido de ese archivo. Para obtener más información sobre la CLI, consulte de independencia del lenguaje .
Este cmdlet es similar a ConvertTo-Xml
, excepto que Export-Clixml
almacena el XML resultante en un archivo.
ConvertTo-XML
devuelve el XML, por lo que puede seguir procesándolo en PowerShell.
Un uso valioso de Export-Clixml
en equipos Windows es exportar credenciales y cadenas seguras de forma segura como XML. Para obtener un ejemplo, vea Ejemplo 3.
Ejemplos
Ejemplo 1: Exportar una cadena a un archivo XML
En este ejemplo se crea un archivo XML que almacena en el directorio actual, una representación de la cadena Esta es una prueba.
"This is a test" | Export-Clixml -Path .\sample.xml
La cadena This is a test
se envía a la canalización.
Export-Clixml
usa el parámetro Path para crear un archivo XML denominado sample.xml
en el directorio actual.
Ejemplo 2: Exportación de un objeto a un archivo XML
En este ejemplo se muestra cómo exportar un objeto a un archivo XML y, a continuación, crear un objeto importando el XML desde el archivo.
Get-Acl C:\test.txt | Export-Clixml -Path .\FileACL.xml
$fileacl = Import-Clixml -Path .\FileACL.xml
El cmdlet Get-Acl
obtiene el descriptor de seguridad del archivo Test.txt
. Envía el objeto a la canalización para pasar el descriptor de seguridad a Export-Clixml
. La representación basada en XML del objeto se almacena en un archivo denominado FileACL.xml
.
El cmdlet Import-Clixml
crea un objeto a partir del XML en el archivo FileACL.xml
. A continuación, guarda el objeto en la variable $fileacl
.
Ejemplo 3: Cifrado de un objeto de credencial exportado en Windows
En este ejemplo, dada una credencial que ha almacenado en la variable $Credential
ejecutando el cmdlet Get-Credential
, puede ejecutar el cmdlet Export-Clixml
para guardar la credencial en el disco.
Importante
Export-Clixml
solo exporta credenciales cifradas en Windows. En sistemas operativos que no son Windows, como macOS y Linux, las credenciales se exportan como texto sin formato almacenado como una matriz de caracteres Unicode. Esto proporciona cierta ofuscación, pero no proporciona cifrado.
$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
El cmdlet Export-Clixml
cifra los objetos de credenciales mediante la API de protección de datos de Windows . El cifrado garantiza que solo la cuenta de usuario de ese equipo pueda descifrar el contenido del objeto de credencial.
El archivo CLIXML
exportado no se puede usar en un equipo diferente o en otro usuario.
En el ejemplo, el archivo en el que se almacena la credencial se representa mediante TestScript.ps1.credential
. Reemplace testScript por el nombre del script por el que va a cargar la credencial.
Envíe el objeto de credencial a la canalización a Export-Clixml
y guárdelo en la ruta de acceso, $Credxmlpath
, que especificó en el primer comando.
Para importar automáticamente la credencial en el script, ejecute los dos comandos finales. Ejecute Import-Clixml
para importar el objeto de credencial segura en el script. Esta importación elimina el riesgo de exponer contraseñas de texto sin formato en el script.
Ejemplo 4: Exportación de un objeto de credencial en Linux o macOS
En este ejemplo, creamos un PSCredential de en la variable $Credential
mediante el cmdlet Get-Credential
. A continuación, usamos Export-Clixml
para guardar la credencial en el disco.
Importante
Export-Clixml
solo exporta credenciales cifradas en Windows. En sistemas operativos que no son Windows, como macOS y Linux, las credenciales se exportan como texto sin formato almacenado como una matriz de caracteres Unicode. Esto proporciona cierta ofuscación, pero no proporciona cifrado.
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
La salida de Get-Content
en este ejemplo se ha truncado para centrarse en la información de credenciales del archivo XML. Tenga en cuenta que el valor de texto sin formato de la contraseña se almacena en el archivo XML como una matriz de caracteres Unicode tal como lo demuestra Format-Hex
. Por lo tanto, el valor se codifica pero no está cifrado.
Parámetros
-Confirm
Le pide confirmación antes de ejecutar el cmdlet.
Tipo: | SwitchParameter |
Alias: | cf |
Posición: | Named |
Valor predeterminado: | False |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
-Depth
Especifica cuántos niveles de objetos contenidos se incluyen en la representación XML. El valor predeterminado es 2
.
El valor predeterminado se puede invalidar para el tipo de objeto en los archivos Types.ps1xml
. Para obtener más información, vea about_Types.ps1xml.
Tipo: | Int32 |
Posición: | Named |
Valor predeterminado: | 2 |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
-Encoding
Especifica el tipo de codificación para el archivo de destino. El valor predeterminado es utf8NoBOM
.
Los valores aceptables para este parámetro son los siguientes:
-
ascii
: usa la codificación para el juego de caracteres ASCII (7 bits). -
ansi
: usa la codificación para la página de códigos ANSI de la referencia cultural actual. Esta opción se agregó en la versión 7.4. -
bigendianunicode
: codifica en formato UTF-16 mediante el orden de bytes big-endian. -
bigendianutf32
: codifica en formato UTF-32 mediante el orden de bytes big-endian. -
oem
: usa la codificación predeterminada para MS-DOS y programas de consola. -
unicode
: codifica en formato UTF-16 mediante el orden de bytes little-endian. -
utf7
: codifica en formato UTF-7. -
utf8
: codifica en formato UTF-8. -
utf8BOM
: codifica en formato UTF-8 con marca de orden de bytes (BOM) -
utf8NoBOM
: codifica en formato UTF-8 sin marca de orden de bytes (BOM) -
utf32
: codifica en formato UTF-32.
A partir de PowerShell 6.2, el parámetro Codificación también permite identificadores numéricos de páginas de códigos registradas (como -Encoding 1251
) o nombres de cadena de páginas de códigos registradas (como -Encoding "windows-1251"
). Para obtener más información, consulte la documentación de .NET para Encoding.CodePage.
A partir de PowerShell 7.4, puede usar el valor de Ansi
para el parámetro Codificación para pasar el identificador numérico de la página de códigos ANSI de la referencia cultural actual sin tener que especificarlo manualmente.
Nota
UTF-7* ya no se recomienda usar. A partir de PowerShell 7.1, se escribe una advertencia si especifica utf7
para el parámetro Codificación.
Tipo: | Encoding |
Valores aceptados: | ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 |
Posición: | Named |
Valor predeterminado: | UTF8NoBOM |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
-Force
Obliga a que el comando se ejecute sin pedir confirmación del usuario.
Hace que el cmdlet borre el atributo de solo lectura del archivo de salida si es necesario. El cmdlet intentará restablecer el atributo de solo lectura cuando se complete el comando.
Tipo: | SwitchParameter |
Posición: | Named |
Valor predeterminado: | False |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
-InputObject
Especifica el objeto que se va a convertir. Escriba una variable que contenga los objetos, o escriba un comando o expresión que obtenga los objetos. También puede canalizar objetos a Export-Clixml
.
Tipo: | PSObject |
Posición: | Named |
Valor predeterminado: | None |
Requerido: | True |
Aceptar entrada de canalización: | True |
Aceptar caracteres comodín: | False |
-LiteralPath
Especifica la ruta de acceso al archivo donde se almacenará la representación XML del objeto. A diferencia de path, el valor del parámetro LiteralPath se usa exactamente como se escribe. No se interpreta ningún carácter como caracteres comodín. Si la ruta de acceso incluye caracteres de escape, escríbala entre comillas simples. Las comillas simples indican a PowerShell que no interprete ningún carácter como secuencias de escape.
Tipo: | String |
Alias: | PSPath, LP |
Posición: | Named |
Valor predeterminado: | None |
Requerido: | True |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
-NoClobber
Indica que el cmdlet no sobrescribe el contenido de un archivo existente. De forma predeterminada, si existe un archivo en la ruta de acceso especificada, Export-Clixml
sobrescribe el archivo sin advertencia.
Tipo: | SwitchParameter |
Alias: | NoOverwrite |
Posición: | Named |
Valor predeterminado: | False |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
-Path
Especifica la ruta de acceso al archivo donde se almacenará la representación XML del objeto.
Tipo: | String |
Posición: | 0 |
Valor predeterminado: | None |
Requerido: | True |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
-WhatIf
Muestra lo que sucedería si el cmdlet se ejecuta. El cmdlet no se ejecuta.
Tipo: | SwitchParameter |
Alias: | wi |
Posición: | Named |
Valor predeterminado: | False |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
Entradas
Puede canalización de cualquier objeto a este cmdlet.
Salidas
Este cmdlet devuelve un objeto FileInfo que representa el archivo creado con los datos almacenados.