Export-Clixml
Cria uma representação baseada em XML de um objeto ou objetos e armazena-a em um arquivo.
Syntax
Export-Clixml
[-Path] <String>
-InputObject <PSObject>
[-Depth <Int32>]
[-Force]
[-NoClobber]
[-Encoding <Encoding>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Export-Clixml
-LiteralPath <String>
-InputObject <PSObject>
[-Depth <Int32>]
[-Force]
[-NoClobber]
[-Encoding <Encoding>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Description
O Export-Clixml
cmdlet cria uma representação baseada em XML da CLI (Common Language Infrastructure) de um objeto ou objetos e a armazena em um arquivo. Em seguida, você pode usar o Import-Clixml
cmdlet para recriar o objeto salvo com base no conteúdo desse arquivo.
Para obter mais informações sobre a CLI, consulte Independência de linguagem.
Esse cmdlet é semelhante a ConvertTo-Xml
, exceto que Export-Clixml
armazena o XML resultante em um arquivo. ConvertTo-XML
retorna o XML, para que você possa continuar a processá-lo no PowerShell.
Um uso valioso de Export-Clixml
em computadores Windows é exportar credenciais e proteger cadeias de caracteres com segurança como XML. Para obter um exemplo, consulte Exemplo 3.
Exemplos
Exemplo 1: exportar uma cadeia de caracteres para um arquivo XML
Este exemplo cria um arquivo XML que armazena no diretório atual, uma representação da cadeia de caracteres Este é um teste.
"This is a test" | Export-Clixml -Path .\sample.xml
A cadeia de caracteres Este é um teste enviado pelo pipeline. Export-Clixml
usa o parâmetro Path para criar um arquivo XML chamado sample.xml
no diretório atual.
Exemplo 2: exportar um objeto para um arquivo XML
Este exemplo mostra como exportar um objeto para um arquivo XML e, em seguida, criar um objeto importando o XML do arquivo.
Get-Acl C:\test.txt | Export-Clixml -Path .\FileACL.xml
$fileacl = Import-Clixml -Path .\FileACL.xml
O Get-Acl
cmdlet obtém o descritor de segurança do Test.txt
arquivo. Ele envia o objeto pelo pipeline para passar o descritor de segurança para Export-Clixml
. A representação baseada em XML do objeto é armazenada em um arquivo chamado FileACL.xml
.
O Import-Clixml
cmdlet cria um objeto do XML no FileACL.xml
arquivo . Em seguida, ele salva o objeto na $fileacl
variável .
Exemplo 3: Criptografar um objeto de credencial exportado no Windows
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 como um texto sem formatação armazenado como uma matriz de caracteres Unicode. Isso fornece alguma ofuscação, mas não fornece criptografia.
$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 somente sua conta de usuário no computador 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 4: Exportando um objeto de credencial no Linux ou macOS
Neste exemplo, criamos uma PSCredential na $Credential
variável usando o Get-Credential
cmdlet . Em seguida, usamos Export-Clixml
para salvar a credencial no 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 como um texto sem formatação armazenado como uma matriz de caracteres Unicode. Isso fornece alguma ofuscação, mas não fornece criptografia.
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
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
A saída de Get-Content
neste exemplo foi truncada para se concentrar nas informações de credencial no arquivo XML. Observe que o valor de texto sem formatação da senha é armazenado no arquivo XML como uma matriz de caracteres Unicode, conforme comprovado por Format-Hex
. Portanto, o valor é codificado, mas não criptografado.
Parâmetros
-Confirm
Solicita sua confirmação antes de executar o cmdlet.
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Depth
Especifica quantos níveis de objetos contidos estão incluídos na representação XML. O valor padrão é 2
.
O valor padrão pode ser substituído para o tipo de objeto nos Types.ps1xml
arquivos. Para obter mais informações, consulte about_Types.ps1xml.
Type: | Int32 |
Position: | Named |
Default value: | 2 |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Encoding
Especifica o tipo de codificação para o arquivo de destino. O valor padrão é utf8NoBOM
.
Os valores aceitáveis para esse parâmetro são os seguintes:
ascii
: usa a codificação para o conjunto de caracteres ASCII (7 bits).bigendianunicode
: codifica no formato UTF-16 usando a ordem de bytes big-endian.oem
: usa a codificação padrão para MS-DOS e programas de console.unicode
: codifica no formato UTF-16 usando a ordem de bytes little-endian.utf7
: codifica no formato UTF-7.utf8
: codifica no formato UTF-8.utf8BOM
: codifica no formato UTF-8 com BOM (Marca de Ordem de Byte)utf8NoBOM
: codifica no formato UTF-8 sem BOM (Marca de Ordem de Byte)utf32
: codifica no formato UTF-32.
A partir do PowerShell 6.2, o parâmetro Encoding também permite IDs numéricas de páginas de código registradas (como -Encoding 1251
) ou nomes de cadeia de caracteres de páginas de código registradas (como -Encoding "windows-1251"
). Para obter mais informações, consulte a documentação do .NET para Encoding.CodePage.
Type: | Encoding |
Accepted values: | ASCII, BigEndianUnicode, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 |
Position: | Named |
Default value: | UTF8NoBOM |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Force
Força o comando a ser executado sem solicitar a confirmação do usuário.
Faz com que o cmdlet limpe o atributo somente leitura do arquivo de saída, se necessário. O cmdlet tentará redefinir o atributo somente leitura quando o comando for concluído.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InputObject
Especifica o objeto a ser convertido. Insira uma variável que contém os objetos ou digite um comando ou uma expressão que obtém os objetos. Você também pode redirecionar objetos para Export-Clixml
.
Type: | PSObject |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-LiteralPath
Especifica o caminho para o arquivo onde a representação XML do objeto será armazenada. 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: | False |
Accept wildcard characters: | False |
-NoClobber
Indica que o cmdlet não substitui o conteúdo de um arquivo existente. Por padrão, se existir um arquivo no caminho especificado, Export-Clixml
substituirá o arquivo sem aviso.
Type: | SwitchParameter |
Aliases: | NoOverwrite |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Path
Especifica o caminho para o arquivo onde a representação XML do objeto será armazenada.
Type: | String |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-WhatIf
Mostra o que aconteceria se o cmdlet fosse executado. O cmdlet não é executado.
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Entradas
Você pode fazer pipeline de qualquer objeto para Export-Clixml
.
Saídas
Export-Clixml
cria um arquivo que contém o XML.