Export-Clixml
Cria uma representação baseada em XML de um objeto ou objetos e a armazena em um arquivo.
Sintaxe
Export-Clixml
[-Depth <Int32>]
[-Path] <String>
-InputObject <PSObject>
[-Force]
[-NoClobber]
[-Encoding <Encoding>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Export-Clixml
[-Depth <Int32>]
-LiteralPath <String>
-InputObject <PSObject>
[-Force]
[-NoClobber]
[-Encoding <Encoding>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Description
O cmdlet Export-Clixml
serializa um objeto em uma representação baseada em XML da CLI (Common Language Infrastructure) e o armazena em um arquivo. Em seguida, você pode usar o cmdlet Import-Clixml
para recriar o objeto salvo com base no conteúdo desse arquivo. Para obter mais informações sobre a CLI, consulte de independência de idioma.
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 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 o 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 This is a test
é enviada pelo pipeline.
Export-Clixml
usa o parâmetro caminho 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 cmdlet Get-Acl
obtém o descritor de segurança do arquivo Test.txt
. 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 cmdlet Import-Clixml
cria um objeto do XML no arquivo FileACL.xml
. Em seguida, ele salva o objeto na variável $fileacl
.
Exemplo 3: Criptografar um objeto de credencial exportado no Windows
Neste exemplo, considerando uma credencial armazenada na variável $Credential
executando o cmdlet Get-Credential
, você pode executar o cmdlet Export-Clixml
para salvar a credencial no disco.
Importante
Export-Clixml
exporta apenas 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 cmdlet Export-Clixml
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 de CLIXML
exportado 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 com o qual você está carregando a credencial.
Envie o objeto de credencial pelo pipeline para Export-Clixml
e salve-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 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 no macOS
Neste exemplo, criamos uma PSCredential na variável $Credential
usando o cmdlet Get-Credential
. Em seguida, usamos Export-Clixml
para salvar a credencial no disco.
Importante
Export-Clixml
exporta apenas 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
Label: String (System.String) <52D60C91>
Offset Bytes Ascii
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 a confirmação antes de executar o cmdlet.
Tipo: | SwitchParameter |
Aliases: | cf |
Cargo: | Named |
Valor padrão: | False |
Obrigatório: | False |
Aceitar a entrada de pipeline: | False |
Aceitar caracteres curinga: | 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 arquivos Types.ps1xml
. Para obter mais informações, consulte about_Types.ps1xml.
Tipo: | Int32 |
Cargo: | Named |
Valor padrão: | 2 |
Obrigatório: | False |
Aceitar a entrada de pipeline: | False |
Aceitar caracteres curinga: | 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). -
ansi
: usa a codificação para a página de código ANSI da cultura atual. Essa opção foi adicionada na versão 7.4. -
bigendianunicode
: codifica no formato UTF-16 usando a ordem de bytes big-endian. -
bigendianutf32
: codifica no formato UTF-32 usando a ordem de bytes big-endian. -
oem
: usa a codificação padrão para programas de MS-DOS e 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 Marca de Ordem de Byte (BOM) -
utf8NoBOM
: codifica no formato UTF-8 sem Marca de Ordem de Bytes (BOM) -
utf32
: codifica no formato UTF-32.
A partir do PowerShell 6.2, o parâmetro de codificação de 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.
A partir do PowerShell 7.4, você pode usar o valor Ansi
para o parâmetro de codificação para passar a ID numérica para a página de código ANSI da cultura atual sem precisar especificá-la manualmente.
Nota
UTF-7 * não é mais recomendável usar. A partir do PowerShell 7.1, um aviso será gravado se você especificar utf7
para o parâmetro de codificação.
Tipo: | Encoding |
Valores aceitos: | ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 |
Cargo: | Named |
Valor padrão: | UTF8NoBOM |
Obrigatório: | False |
Aceitar a entrada de pipeline: | False |
Aceitar caracteres curinga: | 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.
Tipo: | SwitchParameter |
Cargo: | Named |
Valor padrão: | False |
Obrigatório: | False |
Aceitar a entrada de pipeline: | False |
Aceitar caracteres curinga: | False |
-InputObject
Especifica o objeto a ser convertido. Insira uma variável que contenha os objetos ou digite um comando ou expressão que obtém os objetos. Você também pode redirecionar objetos para Export-Clixml
.
Tipo: | PSObject |
Cargo: | Named |
Valor padrão: | None |
Obrigatório: | True |
Aceitar a entrada de pipeline: | True |
Aceitar caracteres curinga: | False |
-LiteralPath
Especifica o caminho para o arquivo em que a representação XML do objeto será armazenada. Ao contrário do caminho, 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. As aspas simples dizem ao PowerShell para não interpretar nenhum caractere como sequências de escape.
Tipo: | String |
Aliases: | PSPath, LP |
Cargo: | Named |
Valor padrão: | None |
Obrigatório: | True |
Aceitar a entrada de pipeline: | False |
Aceitar caracteres curinga: | False |
-NoClobber
Indica que o cmdlet não substitui o conteúdo de um arquivo existente. Por padrão, se houver um arquivo no caminho especificado, Export-Clixml
substituirá o arquivo sem aviso.
Tipo: | SwitchParameter |
Aliases: | NoOverwrite |
Cargo: | Named |
Valor padrão: | False |
Obrigatório: | False |
Aceitar a entrada de pipeline: | False |
Aceitar caracteres curinga: | False |
-Path
Especifica o caminho para o arquivo em que a representação XML do objeto será armazenada.
Tipo: | String |
Cargo: | 0 |
Valor padrão: | None |
Obrigatório: | True |
Aceitar a entrada de pipeline: | False |
Aceitar caracteres curinga: | False |
-WhatIf
Mostra o que aconteceria se o cmdlet fosse executado. O cmdlet não é executado.
Tipo: | SwitchParameter |
Aliases: | wi |
Cargo: | Named |
Valor padrão: | False |
Obrigatório: | False |
Aceitar a entrada de pipeline: | False |
Aceitar caracteres curinga: | False |
Entradas
Você pode fazer o pipeline de qualquer objeto para este cmdlet.
Saídas
Esse cmdlet retorna um objeto FileInfo que representa o arquivo criado com os dados armazenados.