XML - Word - Powershell

D44

Cadet 3rd Year
Registriert
Jan. 2019
Beiträge
40
Wir senden bei uns im Betrieb die neuen Benutzernamen etc per Mail. Nun müssen wir das ganze wechseln zu einem Ausdruck.
Das Passwort wird in das Dokument geschrieben, das ganze sollte via Powershell gemacht werden. Am Schluss benötigen wir ein Word/PDF.

Jedoch wenn ich das ganze mit Powershell anpasse kann ich danach das xml Dokument nicht mehr als Word öffnen
(Die Datei "..:" kann nicht geöffnet werden, da ihr Inhalt Probleme verursacht)(Nicht lesbarer Inhalt gefunden).

Weis jemand woran das liegt bzw wie ich das Problem beheben könnte?


$dtFile1 = "D:\Test\PowerShell\Script\User\createPDF\AD.xml"

$dtFile2 = "D:\Test\PowerShell\Script\User\createPDF\AD_2.xml"

(get-content $dtFile1) | foreach-object {$_ -replace "MailMAIL", "Meier.müller@test.de"} | set-content $dtFile2



D:\Test\PowerShell\Script\User\createPDF\Convert-WordDocument.ps1 -SourcePath
D:\Test\PowerShell\Script\User\createPDF\pdf -IncludeFilter *.xml -TargetFormat PDF
 
Ohne zu wissen was das Skript "Convert-WordDocument.ps1" macht, wird man dir hier nicht weiterhelfen können.
 
Eigentlich geht es mehr um den teil oben, unten wird nur ein pdf erstellt. Bzw gibt es eine Möglichkeit das ganze via xml so zu machen(xml -powershell zu word)? Oder muss ich etwas herausfinden um das ganze im xml selber zu lösen?
 
Soweit ich das sehen kann, ist xml gar nicht notwendig, da man mit Powershell problemlos eine Word-Instanz öffnen kann.
Mit diesem Word-Objekt kann man dann in Powershell relativ einfach Inhalt hinzufügen und anpassen, etc...
Ergänzung ()

Ich hab ein bissel rumgespielt. Du kannst einfach ein Dokument erstellen und Inhalte einfügen.
Oder wie unten gesehen mit Suchen und Ersetzen arbeiten.

PowerShell:
# Word-Objekt erstellen
$Word = New-Object -ComObject Word.Application
# Sichtbar machen
$Word.Visible = $true

# Leeres Dokument erstellen und auswählen
# Hier kann auch ein vorhandenes Objekt geöffnet werden
$Document = $Word.Documents.Add()
$Selection = $Word.Selection

# Wort das ersetzt werden soll
$FindText = "WortVorher"
#Wort das eingefügt wird
$ReplaceWith = "WortNachher"
# Matchregeln
$MatchCase = $False
$MatchWholeWord = $true
$MatchWildcards = $False
$MatchSoundsLike = $False
$MatchAllWordForms = $False
# weitere Regeln, habe dazu nicht alle Erklärungen gefunden
$Forward = $True
$Format = $False
$FindContinue = 1
$Wrap = 1
# Alle ersetzen = 2, Nur das erste ersetzen = 1
$wdReplaceAll = 2

$Selection.Find.Execute($FindText,$MatchCase,$MatchWholeWord,$MatchWildcards,$MatchSoundsLike,$MatchAllWordForms,$Forward,$Wrap,$Format,$ReplaceWith,$ReplaceAll)

Weder besonders schön noch komplett. Das Speichern und Schließen fehlt noch....
 
  • Gefällt mir
Reaktionen: Hayda Ministral
Zurück
Oben