Compartir a través de


Import-Clixml

Importa un archivo CLIXML y crea los objetos correspondientes en PowerShell.

Sintaxis

Import-Clixml
      [-Path] <String[]>
      [-IncludeTotalCount]
      [-Skip <UInt64>]
      [-First <UInt64>]
      [<CommonParameters>]
Import-Clixml
      -LiteralPath <String[]>
      [-IncludeTotalCount]
      [-Skip <UInt64>]
      [-First <UInt64>]
      [<CommonParameters>]

Description

El Import-Clixml cmdlet importa objetos que se han serializado en un archivo XML de Common Language Infrastructure (CLI). Un uso valioso de Import-Clixml en equipos Windows es importar credenciales y cadenas seguras que se exportaron como XML seguro mediante Export-Clixml. En el ejemplo 2 se muestra cómo usar Import-Clixml para importar un objeto de credencial segura.

Los datos CLIXML se deserializan de nuevo en objetos de PowerShell. Sin embargo, los objetos deserializados no son objetos dinámicos. Son una instantánea de los objetos en el momento de la serialización. Los objetos deserializados incluyen propiedades, pero no métodos.

La propiedad TypeNames contiene el nombre de tipo original con Deserializedel prefijo . En el ejemplo 3 se muestra la propiedad TypeNames de un objeto deserializado.

Import-Clixml usa la marca de orden de bytes (BOM) para detectar el formato de codificación del archivo. Si el archivo no tiene boM, supone que la codificación es UTF8.

Para más información sobre la CLI, consulte Independencia del lenguaje.

Ejemplos

Ejemplo 1: Importar un archivo serializado y volver a crear un objeto

En este ejemplo se usa el Export-Clixml cmdlet para guardar una copia serializada de la información del proceso devuelta por Get-Process. Import-Clixml recupera el contenido del archivo serializado y vuelve a crear un objeto almacenado en la $Processes variable.

Get-Process | Export-Clixml -Path .\pi.xml
$Processes = Import-Clixml -Path .\pi.xml

Ejemplo 2: Importación de un objeto de credencial segura

En este ejemplo, dada una credencial que ha almacenado en la variable mediante la $Credential ejecución del Get-Credential cmdlet , puede ejecutar el Export-Clixml cmdlet 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 en texto sin formato.

$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 Export-Clixml cmdlet cifra los objetos de credencial mediante la API de Protección de datos de Windows. El cifrado garantiza que solo la cuenta de usuario pueda descifrar el contenido del objeto de credencial. El archivo exportado CLIXML 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-Clixmly 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 protegida en el script. Esta importación elimina el riesgo de exponer contraseñas de texto sin formato en el script.

Ejemplo 3: Inspección de la propiedad TypeNames de un objeto deserializado

En este ejemplo se muestra cómo importar un objeto almacenado como datos CLIXML. Los datos se deserializan de nuevo en un objeto de PowerShell. Sin embargo, el objeto deserializado no es un objeto activo. Son una instantánea de los objetos en el momento de la serialización. Los objetos deserializados incluyen propiedades, pero no métodos.

$original = [pscustomobject] @{
    Timestamp = Get-Date
    Label     = 'Meeting event'
}
$original | Add-Member -MemberType ScriptMethod -Name GetDisplay -Value {
    '{0:yyyy-MM-dd HH:mm} {1}' -f $this.Timestamp, $this.Label
}
$original | Get-Member -MemberType ScriptMethod

TypeName: System.Management.Automation.PSCustomObject

Name        MemberType   Definition
----        ----------   ----------
Equals      Method       bool Equals(System.Object obj)
GetHashCode Method       int GetHashCode()
GetType     Method       type GetType()
ToString    Method       string ToString()
Label       NoteProperty string Label=Meeting event
Timestamp   NoteProperty System.DateTime Timestamp=1/31/2024 2:27:59 PM
GetDisplay  ScriptMethod System.Object GetDisplay();

$original | Export-Clixml -Path event.clixml
$deserialized = Import-CliXml -Path event.clixml
$deserialized | Get-Member

TypeName: Deserialized.System.Management.Automation.PSCustomObject

Name        MemberType   Definition
----        ----------   ----------
Equals      Method       bool Equals(System.Object obj)
GetHashCode Method       int GetHashCode()
GetType     Method       type GetType()
ToString    Method       string ToString()
Label       NoteProperty string Label=Meeting event
Timestamp   NoteProperty System.DateTime Timestamp=1/31/2024 2:27:59 PM

Tenga en cuenta que el tipo del objeto en $original es System.Management.Automation.PSCustomObject, pero el tipo del objeto en $deserialized es Deserialized.System.Management.Automation.PSCustomObject. Además, falta el GetDisplay() método del objeto deserializado.

Parámetros

-First

Obtiene solo el número especificado de objetos. Especifique el número de objetos que quiere obtener.

Tipo:UInt64
Posición:Named
Valor predeterminado:False
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-IncludeTotalCount

Informa del número total de objetos del conjunto de datos seguido de los objetos seleccionados. Si el cmdlet no puede determinar el recuento total, muestra recuento total desconocido. El entero tiene una propiedad Precision que indica la confiabilidad del valor de recuento total. El valor de Precision va de 0.0 a donde 1.0 0.0 significa que el cmdlet no pudo contar los objetos, 1.0 significa que el recuento es exacto y un valor entre 0.0 e 1.0 indica una estimación cada vez más confiable.

Tipo:SwitchParameter
Posición:Named
Valor predeterminado:False
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-LiteralPath

Especifica la ruta de acceso a los archivos XML. A diferencia de Path, el valor del parámetro LiteralPath se usa exactamente como se escribe. Ninguno de los caracteres se interpreta como caracteres comodín. Si la ruta de acceso contiene caracteres de escape, escríbalos entre comillas simples. Las comillas simples indican a PowerShell que no interprete ningún carácter como secuencias de escape.

Tipo:String[]
Alias:PSPath
Posición:Named
Valor predeterminado:None
Requerido:True
Aceptar entrada de canalización:True
Aceptar caracteres comodín:False

-Path

Especifica la ruta de acceso a los archivos XML.

Tipo:String[]
Posición:0
Valor predeterminado:None
Requerido:True
Aceptar entrada de canalización:True
Aceptar caracteres comodín:False

-Skip

Omite el número especificado de objetos y, después, obtiene los objetos restantes. Especifique el número de objetos que se omitirán.

Tipo:UInt64
Posición:Named
Valor predeterminado:False
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

Entradas

String

Puede canalizar una cadena que contiene una ruta de acceso a este cmdlet.

Salidas

PSObject

Este cmdlet devuelve objetos que se deserializaron a partir de los archivos XML almacenados.

Notas

Al especificar varios valores para un parámetro, use comas para separar los valores. Por ejemplo, <parameter-name> <value1>, <value2>.