Import-Clixml

Importa um arquivo CLIXML e cria objetos correspondentes no PowerShell.

Syntax

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

Description

O Import-Clixml cmdlet importa objetos que foram serializados em um arquivo XML da CLI (Common Language Infrastructure). Um uso valioso de em computadores Windows é importar credenciais e cadeias de Import-Clixml caracteres seguras que foram exportadas como XML seguro usando Export-Clixmlo . O Exemplo #2 mostra como usar Import-Clixml para importar um objeto de credencial seguro.

Os dados CLIXML são desserializados novamente em objetos do PowerShell. No entanto, os objetos desserializados não são objetos dinâmicos. Eles são um instantâneo dos objetos no momento da serialização. Os objetos desserializados incluem propriedades, mas nenhum método.

A propriedade TypeNames contém o nome do tipo original prefixado com Deserialized. O Exemplo #3 mostra a propriedade TypeNames de um objeto desserializado.

Import-Clixml usa a marca de ordem de bytes (BOM) para detetar o formato de codificação do arquivo. Se o arquivo não tiver BOM, ele assume que a codificação é UTF8.

Para obter mais informações sobre CLI, consulte Independência de idioma.

Exemplos

Exemplo 1: Importar um arquivo serializado e recriar um objeto

Este exemplo usa o Export-Clixml cmdlet para salvar uma cópia serializada das informações do processo retornadas pelo Get-Process. Import-Clixml Recupera o conteúdo do arquivo serializado e recria um objeto armazenado na $Processes variável.

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

Exemplo 2: Importar um objeto de credencial seguro

Neste exemplo, dada uma credencial que você armazenou na $Credential variável executando o Get-Credential cmdlet, você pode executar o Export-Clixml cmdlet para salvar a credencial no disco.

Importante

Export-Clixml apenas exporta credenciais encriptadas no Windows. Em sistemas operacionais que não sejam Windows, como macOS e Linux, as credenciais são exportadas em texto sem formatação.

$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

O Export-Clixml cmdlet criptografa objetos de credenciais usando a API de Proteção de Dados do Windows. A criptografia garante que apenas sua conta de usuário possa descriptografar o conteúdo do objeto de credencial. O arquivo exportado CLIXML não pode ser usado em um computador diferente ou por um usuário diferente.

No exemplo, o arquivo no qual a credencial está armazenada é representado por TestScript.ps1.credential. Substitua TestScript pelo nome do script com o qual você está carregando a credencial.

Você envia o objeto de credencial pelo pipeline para Export-Clixmle salva-o no caminho, $Credxmlpath, especificado no primeiro comando.

Para importar a credencial automaticamente para o script, execute os dois comandos finais. Execute Import-Clixml para importar o objeto de credencial seguro para o script. Essa importação elimina o risco de expor senhas de texto simples em seu script.

Exemplo 3: Inspecionar a propriedade TypeNames de um objeto desserializado

Este exemplo mostra a importação de um objeto armazenado como dados CLIXML. Os dados são desserializados novamente em um objeto do PowerShell. No entanto, o objeto desserializado não é um objeto dinâmico. Eles são um instantâneo dos objetos no momento da serialização. Os objetos desserializados incluem propriedades, mas nenhum método.

$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

Observe que o tipo do objeto em $original é System.Management.Automation.PSCustomObject, mas o tipo do objeto em $deserialized é Deserialized.System.Management.Automation.PSCustomObject. Além disso, o GetDisplay() método está faltando no objeto desserializado.

Parâmetros

-First

Obtém apenas o número especificado de objetos. Insira o número de objetos a obter.

Type:UInt64
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-IncludeTotalCount

Relata o número total de objetos no conjunto de dados seguido pelos objetos selecionados. Se o cmdlet não puder determinar a contagem total, ele exibirá Contagem total desconhecida. O inteiro tem uma propriedade Accuracy que indica a confiabilidade do valor total da contagem. O valor de Accuracy varia de 0.0 onde 1.00.0 significa que o cmdlet não pôde contar os objetos, 1.0 significa que a contagem é exata e um valor entre 0.0 e 1.0 indica uma estimativa cada vez mais confiável.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-LiteralPath

Especifica o caminho para os arquivos XML. Ao contrário de Path, o valor do parâmetro LiteralPath é usado exatamente como é digitado. Nenhum caractere é interpretado como curinga. Se o caminho incluir caracteres de escape, coloque-o entre aspas simples. Aspas simples dizem ao PowerShell para não interpretar nenhum caractere como sequências de escape.

Type:String[]
Aliases:PSPath, LP
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Path

Especifica o caminho para os arquivos XML.

Type:String[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Skip

Ignora o número especificado de objetos e, em seguida, obtém os objetos restantes. Insira o número de objetos a serem ignorados.

Type:UInt64
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Entradas

String

Você pode canalizar uma cadeia de caracteres contendo um caminho para esse cmdlet.

Saídas

PSObject

Este cmdlet retorna objetos que foram desserializados dos arquivos XML armazenados.

Notas

Ao especificar vários valores para um parâmetro, use vírgulas para separar os valores. Por exemplo, <parameter-name> <value1>, <value2>.