Cola PowerShell à esquerda e clica em "Converter" — transformamos em XMLCola código PowerShell

O que esta ferramenta faz

Se já precisaste de meter uma configuração PowerShell num ficheiro XML — para um recurso DSC, uma tarefa MSBuild, um template app.config ou um fixture SoapUI — já conheces o esquema. Ou acabas por correr ConvertTo-Xml e a aparar os wrappers feios <Object Type="..."> à mão, ou pegas em Export-CliXml e recebes um payload CLIXML que ninguém fora do PowerShell sabe ler. Cola aqui o PowerShell e recebes XML bem formado que qualquer parser XML normal aceita — sem ruído <Property Name="...">, sem tags de tipo CLIXML, só os dados.

Entende as formas que o código PowerShell usa de verdade. Um PSCustomObject vira um elemento com filhos nomeados de acordo com cada propriedade. Um hashtable @{ Name = "Ava" } comporta-se igual. Um array criado com @(...) vira um elemento contentor com um filho por item. Valores [PSCustomObject] aninhados dentro de um objeto pai passam como elementos aninhados, não como blobs stringificados. Booleanos ($true, $false) e números mantêm os tipos nativos na saída; $null vira um elemento vazio auto-fechado para que a forma continue previsível em vez de largar o campo em silêncio.

Algumas manias da linguagem são tratadas como um humano esperaria. Strings entre aspas duplas passam sem expandir marcadores de interpolação como $var — preservamos o que colaste literalmente. As here-strings (@" ... "@) são tratadas como conteúdo de texto multi-linha. Datas escritas como [datetime]"2026-04-21" saem como strings ISO-8601. Nomes de propriedade com hífens recebem um nome de elemento seguro (PowerShell deixa-te escrever "User-Agent" = "..." num hashtable, o que é ilegal como tag XML em cru — convertemos para que a saída continue a parsear). A forma mantém-se fiel ao input; o XML fica utilizável.

Como usar

Três passos. Funciona igual quer coles um único hashtable quer um script de configuração inteiro.

1

Cola o teu PowerShell (ou testa o exemplo)

Atira o teu script para o editor da esquerda. Um [PSCustomObject]@{...} simples, um hashtable aninhado, um array @(...) de objetos, ou um bloco de config inteiro — tudo bem. Clica em Carregar exemplo se quiseres um payload de encomenda realista para brincar primeiro.

Não precisas de tirar comentários, remover blocos param() ou limpar o script antes. Cola o que tens. Lemos só os literais de objeto e ignoramos o resto.

2

Aperta Converter

Clica no botão verde Converter. A ferramenta percorre a estrutura PowerShell, preserva cada propriedade e item do array, e constrói o XML numa passagem. Vais ver um indicador de loading curto enquanto corre.

3

Copia o XML

O painel da direita enche-se com XML indentado que qualquer parser conforme vai aceitar. Mete-o na tua configuração DSC, no ficheiro MSBuild, ou onde mais precisares.

Quando realmente dá jeito

Escrever payloads de configuração DSC

Tens um hashtable PowerShell que descreve a configuração de um nó e precisas de uma versão XML para um consumidor não-DSC ou para documentação. Cola, converte, pronto — chega de babysitting à saída do ConvertTo-Xml.

Ficheiros de variáveis de pipeline Azure DevOps

Os pipelines às vezes esperam um grupo de variáveis em XML. Cola o hashtable PowerShell que já manténs e recebe XML que entra direto em <code>variables.xml</code> — sem edição manual.

Exportar payloads do Visualizador de Eventos do Windows

Quando constróis um registo de evento em PowerShell como PSCustomObject e precisas de o mandar para um pipeline de logging que ingere XML, isto poupa-te escrever um serializador à medida. A forma aninhada passa sem alterações.

Templates iniciais de app.config / web.config

Transforma um hashtable de settings PowerShell num <code>app.config</code> inicial que podes editar à mão. Mais rápido do que gerar um do zero e mantém as chaves sincronizadas com os teus scripts.

Perguntas comuns

Em que é isto diferente de correr ConvertTo-Xml no meu objeto?

O ConvertTo-Xml embrulha tudo num envelope genérico <Object Type="..."><Property Name="..."> — legível pelo PowerShell, feio em todo o lado. Esta ferramenta emite os nomes das propriedades como elementos XML reais, por isso a saída parece XML escrito por uma pessoa à mão. Sem a indireção <Property Name>, sem atributos de tipo a atrapalhar.

Produz CLIXML como o Export-CliXml?

Não — e é mesmo esse o ponto. O Export-CliXml produz CLIXML, um formato específico do PowerShell pensado para round-trip de volta ao PowerShell. Se tens de entregar o XML a um sistema que não é PowerShell (um serviço Java, um leitor de configuração, um pipeline validado por XSD), CLIXML é a forma errada. Esta ferramenta dá-te XML simples e legível em vez disso.

Posso colar um ficheiro .ps1 inteiro ou só literais de objetos?

Cola o que tens. Se o script contém um único literal de objeto atribuído a uma variável, é isso que sai. Se há vários hashtables ou PSCustomObjects de topo, cada um sai como o seu próprio elemento. Corpos de funções, blocos param(), imports e linhas Write-Host são ignorados — só as formas de dados contam.

Como é que $null, $true, $false e arrays vazios são tratados?

$null vira um elemento vazio auto-fechado para a forma ficar consistente (em vez de o campo desaparecer). $true e $false viram as strings literais true e false. Um @() vazio vira um elemento contentor vazio. Assim as ferramentas a jusante vêem sempre a mesma estrutura mesmo quando alguns campos estão por preencher.

E as chaves de hashtable que não são nomes XML válidos — hífens, espaços, a começar por número?

Chaves como "User-Agent" ou "2024-Q1" são legais num hashtable PowerShell mas ilegais como nomes de elemento XML em cru. Reescrevemo-las para uma forma segura (mantendo a original como atributo quando faz sentido) para que a saída continue a parsear. Se isso é importante para o teu consumidor, dá uma vista de olhos às tags geradas primeiro.

O meu código é guardado?

O código é enviado para o backend para conversão e não é persistido — não fazemos log do payload. Se o script for mesmo sensível (credenciais de produção, caminhos internos), limpa-o antes de colar, como farias com qualquer ferramenta online.

Outras ferramentas que podes precisar

PowerShell para XML é uma peça do puzzle. Estas ferramentas combinam bem com ela: