Conversor de PowerShell para XML
Cola objetos PowerShell ou hashtables. Recebe XML limpo.
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.
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.
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.
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: