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 Import-Clixml
em computadores Windows é importar credenciais e proteger cadeias de caracteres que foram exportadas como XML seguro usando Export-Clixml
.
O exemplo nº 2 mostra como usar Import-Clixml
para importar um objeto de credencial segura.
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 uma 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 de tipo original prefixado com Deserialized
.
O exemplo nº 3 mostra a propriedade TypeNames de um objeto desserializado.
Import-Clixml
usa a BOM (marca de ordem de byte) para detectar o formato de codificação do arquivo. Se o arquivo não tiver BOM, ele assumirá que a codificação é UTF8.
Para obter mais informações sobre a CLI, consulte Independência de linguagem.
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 por 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 segura
Neste exemplo, considerando uma credencial armazenada na variável executando o Get-Credential
cmdlet , você pode executar o Export-Clixml
cmdlet para salvar a credencial no $Credential
disco.
Importante
Export-Clixml
exporta somente credenciais criptografadas no Windows. Em sistemas operacionais não 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 credencial 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 é armazenada é representado por TestScript.ps1.credential
. Substitua TestScript pelo nome do script pelo qual você está carregando a credencial.
Você envia o objeto de credencial pelo pipeline para Export-Clixml
e o salva no caminho, $Credxmlpath
, que você especificou 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 protegido para o script. Essa importação elimina o risco de expor senhas de texto sem formatação 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 ativo. Eles são uma 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á ausente do objeto desserializado.
Parâmetros
-First
Obtém somente 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 Precisão varia de 0.0
até 1.0
onde 0.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 ele é digitado. Nenhum caractere é interpretado como caractere 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 obtém os objetos restantes. Insira o número de objetos a ignorar.
Type: | UInt64 |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Entradas
Você pode redirecionar uma cadeia de caracteres que contém um caminho para esse cmdlet.
Saídas
Esse cmdlet retorna objetos que foram desserializados dos arquivos XML armazenados.
Observações
Ao especificar vários valores para um parâmetro, use vírgulas para separá-los. Por exemplo, <parameter-name> <value1>, <value2>
.