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-Clixmle 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

PSObject

Você pode fazer pipeline de qualquer objeto para Export-Clixml.

Saídas

FileInfo

Export-Clixml cria um arquivo que contém o XML.