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 Deserialized
el 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-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 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, LP |
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
Puede canalizar una cadena que contiene una ruta de acceso a este cmdlet.
Salidas
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>
.