Export-Clixml

Cria uma representação baseada em XML de um objeto ou objetos e a armazena em um arquivo.

Syntax

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 Export-Clixml cmdlet serializou um objeto em uma representação baseada em XML da Common Language Infrastructure (CLI), armazenando-o 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 CLI, consulte Independência de idioma.

Este cmdlet é semelhante ao 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 em computadores Windows é exportar credenciais e proteger cadeias de Export-Clixml 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 This is a test.

"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 Path para criar um arquivo XML nomeado 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 a partir 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, 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 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 credenciais usando a API de Proteção de Dados do Windows. A criptografia garante que somente sua conta de usuário somente nesse 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 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 4: Exportando um objeto de credencial no Linux ou macOS

Neste exemplo, criamos um PSCredential na $Credential variável usando o Get-Credential cmdlet. Em seguida, usamos Export-Clixml 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 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 neste exemplo foi truncada para se concentrar nas informações de Get-Content credenciais 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 pelo Format-Hex. Assim, o valor é codificado, mas não criptografado.

Parâmetros

-Confirm

Solicita a 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 são incluídos na representação XML. O valor predefinido é 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 predefinido é utf8NoBOM.

Os valores aceitáveis para este 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. Esta 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 MS-DOS e programas de console.
  • unicode: Codifica no formato UTF-16 usando a ordem de bytes little-endian.
  • utf7: Codifica em formato UTF-7.
  • utf8: Codifica em formato UTF-8.
  • utf8BOM: Codifica no formato UTF-8 com marca de ordem de bytes (BOM)
  • utf8NoBOM: Codifica no formato UTF-8 sem marca de ordem de bytes (BOM)
  • utf32: Codifica em 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.

A partir do PowerShell 7.4, você pode usar o Ansi valor do parâmetro Encoding para passar a ID numérica da página de código ANSI da cultura atual sem precisar especificá-la manualmente.

Nota

UTF-7* não é mais recomendado para usar. A partir do PowerShell 7.1, um aviso será escrito se você especificar utf7 para o parâmetro Encoding .

Type:Encoding
Accepted values:ASCII, BigEndianUnicode, BigEndianUTF32, 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 pedir 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 contenha os objetos ou digite um comando ou expressão que obtenha os objetos. Você também pode canalizar 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 é 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: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 substitui 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

Apresenta o que aconteceria mediante a execução do cmdlet. 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 canalizar qualquer objeto para esse cmdlet.

Saídas

FileInfo

Este cmdlet retorna um objeto FileInfo que representa o arquivo criado com os dados armazenados.