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?
Please also mark the comments that contributed to the solution of the article
Content-Key: 7218620161
Url: https://administrator.de/contentid/7218620161
Printed on: April 27, 2024 at 13:04 o'clock
3 Comments
Latest comment
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