Incolla PowerShell a sinistra e clicca su "Converti" — lo trasformiamo in XMLIncolla codice PowerShell

Cosa fa questo strumento

Se hai mai avuto bisogno di infilare una configurazione PowerShell dentro un file XML — per una risorsa DSC, un task MSBuild, un template app.config o una fixture SoapUI — conosci già la solfa. Finisci o per lanciare ConvertTo-Xml e ritagliare a mano i brutti wrapper <Object Type="...">, o per affidarti a Export-CliXml e ritrovarti un payload CLIXML che fuori da PowerShell non legge nessuno. Incolla qui il PowerShell e ti torna indietro XML ben formato che un normale parser XML accetta — niente rumore <Property Name="...">, niente tag di tipo CLIXML, solo i dati.

Lo strumento capisce le forme che il codice PowerShell usa davvero. Un PSCustomObject diventa un elemento con figli nominati in base a ogni proprietà. Un hashtable @{ Name = "Ava" } si comporta allo stesso modo. Un array creato con @(...) diventa un elemento contenitore con un figlio per ogni item. I valori [PSCustomObject] annidati dentro un oggetto padre passano come elementi annidati, non come blob stringificati. Booleani ($true, $false) e numeri mantengono i tipi nativi nell'output; $null diventa un elemento vuoto auto-chiuso, così la forma resta prevedibile invece di perdere il campo in silenzio.

Alcune particolarità del linguaggio sono gestite come un umano si aspetterebbe. Le stringhe fra virgolette doppie passano senza espandere marcatori di interpolazione come $var — preserviamo ciò che hai incollato, letteralmente. Le here-string (@" ... "@) sono trattate come contenuto testuale multilinea. Le date scritte come [datetime]"2026-04-21" escono come stringhe ISO-8601. I nomi di proprietà con trattini ricevono un nome di elemento sicuro (PowerShell ti permette di scrivere "User-Agent" = "..." in un hashtable, cosa illegale come tag XML grezzo — lo convertiamo così che l'output continui a essere parsabile). La forma resta fedele all'input; l'XML resta usabile.

Come si usa

Tre passi. Funziona uguale sia che incolli un singolo hashtable sia che incolli un intero script di configurazione.

1

Incolla il tuo PowerShell (o prova l'esempio)

Butta lo script nell'editor a sinistra. Un singolo [PSCustomObject]@{...}, un hashtable annidato, un array @(...) di oggetti, o un blocco di configurazione completo — tutto va bene. Clicca Carica esempio se vuoi un payload Order realistico con cui giocare prima.

Non serve che tu tolga i commenti, rimuova i blocchi param() o ripulisca lo script prima. Incolla quello che hai. Leggiamo solo i literal degli oggetti e ignoriamo il resto.

2

Premi Converti

Clicca il pulsante verde Converti. Lo strumento percorre la struttura PowerShell, preserva ogni proprietà e ogni elemento dell'array, e costruisce l'XML in una sola passata. Vedrai un breve indicatore di caricamento durante l'esecuzione.

3

Copia l'XML

Il pannello di destra si riempie con XML indentato che qualunque parser conforme allo standard accetterà. Mettilo nella tua configurazione DSC, nel tuo file MSBuild o dove ti serve.

Quando torna davvero utile

Scrivere payload di configurazione DSC

Hai un hashtable PowerShell che descrive la configurazione di un nodo e ti serve una versione XML per un consumer non-DSC o per la documentazione. Incolla, converti, fatto — basta fare da babysitter all'output di ConvertTo-Xml.

File di variabili per pipeline Azure DevOps

A volte le pipeline si aspettano un gruppo di variabili come XML. Incolla l'hashtable PowerShell che già mantieni e ricevi XML che entra diretto in <code>variables.xml</code> — senza modifiche manuali.

Esportare payload del registro eventi di Windows

Quando costruisci un record di evento in PowerShell come PSCustomObject e devi inviarlo a una pipeline di logging che accetta XML, ti risparmia lo scrivere un serializzatore su misura. La forma annidata passa invariata.

Template iniziali app.config / web.config

Trasforma un hashtable di settings PowerShell in un <code>app.config</code> di partenza che puoi editare a mano. Più rapido che generarlo da zero e tiene le chiavi allineate con i tuoi script.

Domande frequenti

In cosa è diverso dal lanciare ConvertTo-Xml sul mio oggetto?

ConvertTo-Xml incarta tutto in una busta generica <Object Type="..."><Property Name="..."> — leggibile da PowerShell, orrenda ovunque altrove. Questo strumento emette i nomi delle proprietà come veri elementi XML, quindi l'output sembra XML scritto a mano da una persona. Niente indirezione <Property Name>, niente attributi di tipo che intasano.

Produce CLIXML come fa Export-CliXml?

No — ed è proprio il punto. Export-CliXml produce CLIXML, un formato specifico di PowerShell pensato per il round-trip indietro verso PowerShell. Se devi consegnare l'XML a un sistema che non è PowerShell (un servizio Java, un lettore di configurazione, una pipeline validata da XSD), CLIXML è la forma sbagliata. Questo strumento ti dà XML semplice e leggibile.

Posso incollare un file .ps1 intero o solo literal di oggetti?

Incolla quello che hai. Se lo script contiene un singolo literal di oggetto assegnato a una variabile, esce quello. Se ci sono più hashtable o PSCustomObject di livello top, ognuno esce come proprio elemento. Corpi di funzioni, blocchi param(), import e righe Write-Host sono ignorati — contano solo le forme dei dati.

Come vengono gestiti $null, $true, $false e array vuoti?

$null diventa un elemento vuoto auto-chiuso, così la forma resta consistente (invece che il campo sparisca). $true e $false diventano le stringhe letterali true e false. Un @() vuoto diventa un elemento contenitore vuoto. In questo modo il tooling a valle vede sempre la stessa struttura anche quando certi campi non sono valorizzati.

E le chiavi di hashtable che non sono nomi XML validi — trattini, spazi, che iniziano con un numero?

Chiavi come "User-Agent" o "2024-Q1" sono legali in un hashtable PowerShell ma illegali come nomi di elemento XML grezzi. Le riscriviamo in una forma sicura (tenendo l'originale come attributo quando ha senso) così l'output continua a essere parsabile. Se per il tuo consumer è importante, dai un'occhiata prima ai tag generati.

Il mio codice viene salvato?

Il codice è inviato al backend per la conversione e non viene persistito — non logghiamo il payload. Se lo script è davvero sensibile (credenziali di produzione, path interni), ripuliscilo prima di incollare, come faresti con qualunque tool online.

Altri strumenti che potrebbero servirti

PowerShell → XML è solo un pezzo del puzzle. Questi strumenti si sposano bene: