XML Datei mit PowerShell bearbeiten
Hallo zusammen,
ich brauche eure Hilfe, da ich an einer Stelle nicht mehr weiterkomme.
Ich möchte mittels PowerShell Skript eine XML-Datei erstellen und dort an einer bestimmten Stelle den jeweiligen Benutzernamen einfügen. Dieser ist über $userName dem Skript bekannt.
Aussehen soll die XML später so:
Der einzufügende Username ist dem PowerShell Skript via Variable $userName bekannt.
Wenn ich das Skript laufen lasse, wird die Variable allerdings nicht eingefügt.
Angedacht war das so:
Wie kann ich das Problem lösen?
ich brauche eure Hilfe, da ich an einer Stelle nicht mehr weiterkomme.
Ich möchte mittels PowerShell Skript eine XML-Datei erstellen und dort an einer bestimmten Stelle den jeweiligen Benutzernamen einfügen. Dieser ist über $userName dem Skript bekannt.
Aussehen soll die XML später so:
<xml xmlns:o="urn:schemas-microsoft-com:office:office">
<o:MainFile HRef="../My_MailSignatur_USERNAME.htm"/>
<o:File HRef="themedata.thmx"/>
<o:File HRef="colorschememapping.xml"/>
<o:File HRef="image001.png"/>
<o:File HRef="filelist.xml"/>
</xml>
Der einzufügende Username ist dem PowerShell Skript via Variable $userName bekannt.
Wenn ich das Skript laufen lasse, wird die Variable allerdings nicht eingefügt.
Angedacht war das so:
#Create XML File
New-Item -Path "C:\Temp\1.xml" -ItemType File
Set-Content C:\Temp\1.xml '<xml xmlns:o="urn:schemas-microsoft-com:office:office">
<o:MainFile HRef="../My_MailSignatur_$userName.htm"/>
<o:File HRef="themedata.thmx"/>
<o:File HRef="colorschememapping.xml"/>
<o:File HRef="image001.png"/>
<o:File HRef="filelist.xml"/>
</xml>'
Wie kann ich das Problem lösen?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 7218620161
Url: https://administrator.de/contentid/7218620161
Ausgedruckt am: 22.11.2024 um 01:11 Uhr
3 Kommentare
Neuester Kommentar
Servus @newit1.
Variablen werden innerhalb von Hochkommas nicht expandiert nur zwischen normalen Anführungszeichen. Hier kannst du praktischerweise einen sogenannten Here-String verwenden dann musst du die bereits vorhandenen normalen Anführungszeichen nicht escapen.
Variable expansion in strings and here-strings
Grüße Uwe
p.s. eine vollständige XML Datei sollte sofern es nicht nur ein Fragment ist im Bestfall immer eine XML-Declaration im Header besitzen die bspw. so aussieht
Das nur so nebenbei als Anmerkung.
Variablen werden innerhalb von Hochkommas nicht expandiert nur zwischen normalen Anführungszeichen. Hier kannst du praktischerweise einen sogenannten Here-String verwenden dann musst du die bereits vorhandenen normalen Anführungszeichen nicht escapen.
$userName = $env:USERNAME
Set-Content -LiteralPath 'C:\Temp\1.xml' -Value @"
<xml xmlns:o="urn:schemas-microsoft-com:office:office">
<o:MainFile HRef="../My_MailSignatur_$userName.htm"/>
<o:File HRef="themedata.thmx"/>
<o:File HRef="colorschememapping.xml"/>
<o:File HRef="image001.png"/>
<o:File HRef="filelist.xml"/>
</xml>
"@
Grüße Uwe
p.s. eine vollständige XML Datei sollte sofern es nicht nur ein Fragment ist im Bestfall immer eine XML-Declaration im Header besitzen die bspw. so aussieht
<?xml version="1.0" encoding="utf-8"?>
Moin,
ich würde ja immer die XML-Funktionen der PS nutzen. Hier eine recht gute Einführung:
https://www.langlitz-it.de/?p=1297
hth
Erik
ich würde ja immer die XML-Funktionen der PS nutzen. Hier eine recht gute Einführung:
https://www.langlitz-it.de/?p=1297
hth
Erik
Zitat von @erikro:
ich würde ja immer die XML-Funktionen der PS nutzen. Hier eine recht gute Einführung:
https://www.langlitz-it.de/?p=1297
Hi Erik. Bin ich vollkommen bei dir, für den TO vermutlich hier etwas overkill wenn er die Datei rein nur erstellen und nichts an einer bestehenden XML ändern muss. Im Sinne der finalen Syntax-Gültigkeit ist das objektorientierte Anlegen aber natürlich immer die bessere Wahl.ich würde ja immer die XML-Funktionen der PS nutzen. Hier eine recht gute Einführung:
https://www.langlitz-it.de/?p=1297
Grüße Uwe