Wklej PowerShella po lewej i kliknij "Konwertuj" — zamienimy to na XMLWklej kod PowerShell

Co robi to narzędzie

Jeśli kiedyś musiałeś upchnąć konfigurację PowerShella w plik XML — dla zasobu DSC, zadania MSBuild, szablonu app.config albo fixture'a SoapUI — znasz ten taniec. Kończy się albo odpalaniem ConvertTo-Xml i ręcznym wycinaniem brzydkich opakowań <Object Type="...">, albo sięganiem po Export-CliXml i dostawaniem payloadu CLIXML, którego poza PowerShellem nikt nie umie przeczytać. Wklej PowerShella tutaj i dostaniesz poprawnie uformowany XML, który przyjmie zwykły parser XML — bez szumu <Property Name="...">, bez tagów typów CLIXML, po prostu dane.

Narzędzie rozumie kształty, których kod PowerShell faktycznie używa. PSCustomObject staje się elementem z dziećmi nazwanymi od każdej właściwości. Hashtable @{ Name = "Ava" } zachowuje się tak samo. Tablica stworzona przez @(...) staje się elementem-kontenerem z jednym dzieckiem na element. Zagnieżdżone wartości [PSCustomObject] wewnątrz obiektu rodzica przychodzą jako zagnieżdżone elementy, a nie jako zestringifikowane kłaczki. Booleany ($true, $false) i liczby zachowują natywne typy w wyjściu; $null staje się pustym samozamykającym się elementem, żeby kształt pozostał przewidywalny, zamiast po cichu tracić pole.

Kilka dziwactw języka jest obsługiwanych tak, jak człowiek by oczekiwał. Stringi w cudzysłowach podwójnych przechodzą bez rozwijania znaczników interpolacji typu $var — zachowujemy to, co wkleiłeś, dosłownie. Here-stringi (@" ... "@) traktujemy jako wielowierszową treść tekstową. Daty zapisane jako [datetime]"2026-04-21" wychodzą jako stringi ISO-8601. Nazwy właściwości z myślnikami dostają bezpieczną nazwę elementu (PowerShell pozwala pisać "User-Agent" = "..." w hashtable, co jest nielegalne jako surowy tag XML — konwertujemy to tak, żeby wyjście dało się dalej parsować). Kształt pozostaje wierny wejściu; XML pozostaje używalny.

Jak tego użyć

Trzy kroki. Działa tak samo, czy wklejasz pojedynczy hashtable, czy cały skrypt konfiguracyjny.

1

Wklej swojego PowerShella (albo spróbuj przykładu)

Wrzuć skrypt do edytora po lewej. Pojedynczy [PSCustomObject]@{...}, zagnieżdżony hashtable, tablica @(...) obiektów albo cały blok konfiguracji — wszystko przejdzie. Kliknij Wczytaj przykład, jeśli chcesz najpierw pobawić się realistycznym payloadem Order.

Nie musisz wcześniej wycinać komentarzy, wyrzucać bloków param() ani sprzątać skryptu. Wklej, co masz. Przeczytamy tylko literały obiektów i zignorujemy resztę.

2

Wciśnij Konwertuj

Kliknij zielony przycisk Konwertuj. Narzędzie przechodzi strukturę PowerShella, zachowuje każdą właściwość i każdy element tablicy i buduje XML w jednym przebiegu. Zobaczysz krótki wskaźnik ładowania podczas wykonywania.

3

Skopiuj XML

Prawy panel wypełnia się wciętym XML-em, który przyjmie dowolny parser zgodny ze standardem. Wrzuć go do swojej konfiguracji DSC, pliku MSBuild albo gdziekolwiek tego potrzebujesz.

Kiedy to naprawdę się przydaje

Pisanie payloadów konfiguracji DSC

Masz hashtable PowerShella opisujący konfigurację węzła i potrzebujesz wersji XML dla konsumenta spoza DSC albo do dokumentacji. Wklej, konwertuj, gotowe — koniec z pilnowaniem wyjścia z ConvertTo-Xml.

Pliki zmiennych pipeline'u Azure DevOps

Pipeline'y czasem oczekują grupy zmiennych jako XML. Wklej hashtable PowerShella, który już utrzymujesz, dostaniesz XML, który wpada prosto do <code>variables.xml</code> — bez edytowania ręcznego.

Eksportowanie payloadów dziennika zdarzeń Windows

Kiedy budujesz rekord zdarzenia w PowerShellu jako PSCustomObject i musisz go przekazać do pipeline'u logującego, który pobiera XML, to oszczędza ci pisania własnego serializatora. Zagnieżdżony kształt przechodzi bez zmian.

Szablony startowe app.config / web.config

Zamień hashtable ustawień PowerShella na startowy <code>app.config</code>, który możesz edytować ręcznie. Szybsze niż generowanie od zera i trzyma klucze zsynchronizowane ze skryptami.

Częste pytania

Czym się to różni od odpalenia ConvertTo-Xml na moim obiekcie?

ConvertTo-Xml zawija wszystko w ogólną kopertę <Object Type="..."><Property Name="..."> — czytelną z PowerShella, brzydką wszędzie indziej. To narzędzie emituje nazwy właściwości jako prawdziwe elementy XML, więc wyjście wygląda jak XML pisany ręcznie przez człowieka. Bez pośrednika <Property Name>, bez bałaganu z atrybutami typów.

Czy produkuje CLIXML tak jak Export-CliXml?

Nie — i o to właśnie chodzi. Export-CliXml wypluwa CLIXML, format specyficzny dla PowerShella zaprojektowany do tego, żeby wrócić z powrotem do PowerShella. Jeśli musisz przekazać XML do systemu, który nie jest PowerShellem (usługa Java, czytnik konfiguracji, pipeline walidowany XSD), CLIXML to zła forma. To narzędzie daje zwykły, czytelny XML.

Czy mogę wkleić cały plik .ps1 czy tylko literały obiektów?

Wklej, co masz. Jeśli skrypt zawiera pojedynczy literał obiektu przypisany do zmiennej, to właśnie to wychodzi. Jeśli jest kilka hashtable'i albo PSCustomObjectów na najwyższym poziomie, każdy zostaje wyemitowany jako własny element. Ciała funkcji, bloki param(), importy i linie Write-Host są ignorowane — liczą się tylko kształty danych.

Jak obsługiwane są $null, $true, $false i puste tablice?

$null staje się pustym samozamykającym się elementem, żeby kształt pozostał spójny (zamiast żeby pole zniknęło). $true i $false stają się dosłownymi stringami true i false. Puste @() staje się pustym elementem-kontenerem. Dzięki temu narzędzia w dalszym ciągu widzą zawsze tę samą strukturę, nawet gdy niektóre pola nie są ustawione.

A co z kluczami hashtable, które nie są poprawnymi nazwami XML — myślniki, spacje, zaczynające się od cyfry?

Klucze takie jak "User-Agent" czy "2024-Q1" są legalne w hashtable PowerShella, ale nielegalne jako surowe nazwy elementów XML. Przepisujemy je do bezpiecznej formy (zachowując oryginał jako atrybut, gdy to ma sens), żeby wyjście dało się parsować. Jeśli to istotne dla twojego konsumenta, zerknij najpierw na wygenerowane tagi.

Czy mój kod jest przechowywany?

Kod jest wysyłany do backendu w celu konwersji i nie jest zapisywany — nie logujemy payloadu. Jeśli skrypt jest naprawdę wrażliwy (produkcyjne poświadczenia, wewnętrzne ścieżki), wyczyść go przed wklejeniem, tak samo jak z każdym innym narzędziem online.

Inne narzędzia, które mogą ci się przydać

PowerShell do XML to jeden kawałek układanki. Te narzędzia dobrze z nim grają: