Powershell - Schleifeproblem - variablen Werte
Hallo liebe Community,
ich komme bei einem Logikfehler nicht weiter, der wahrscheinlich aufgrund der zusammengetragenen Code-Schnipsel aufgetreten ist.
Powershell ist ziemlich Neuland - seid gestern.
Aufgabe: pdf2email
In einem Verzeichnis liegen mehrere PDF/A Dateien, in denen eine E-Mailadresse gesucht werden soll.
Die einzelne PDF soll dann als Anhang an die ausgelesene E-Mailadresse versandt werden.
Nach erfolgreichen E-Mailversand wird das PDF verschoben, das nächste PDF wird ausgelesen, bis kein Dokument mehr in dem Verzeichnis vorhanden ist.
Was funktioniert:
- auslesen der PDF und extrahieren des E-Mail Stings in eine Variable
- auslesen des Dateinames in eine Variable für Dateiahang
Was funktioniert nicht:
Die Abarbeitung der Schleife, bei mehreren vorhandenen Dateien wird je vorhandener Datei ein Wert in die Variable eingetragen.
In den Variablen sollte jedoch nur die Werte der ersten Datei geschrieben werden.
Könnt ihr mir weiterhelfen?
Der Output sieht wie folgt aus:
Die Variablen auf den ersten Zeilenwert zu begrenzen mit funktioniert leider nicht wie erwartet.
Vielen Dank
Beginner2020
ich komme bei einem Logikfehler nicht weiter, der wahrscheinlich aufgrund der zusammengetragenen Code-Schnipsel aufgetreten ist.
Powershell ist ziemlich Neuland - seid gestern.
Aufgabe: pdf2email
In einem Verzeichnis liegen mehrere PDF/A Dateien, in denen eine E-Mailadresse gesucht werden soll.
Die einzelne PDF soll dann als Anhang an die ausgelesene E-Mailadresse versandt werden.
Nach erfolgreichen E-Mailversand wird das PDF verschoben, das nächste PDF wird ausgelesen, bis kein Dokument mehr in dem Verzeichnis vorhanden ist.
Was funktioniert:
- auslesen der PDF und extrahieren des E-Mail Stings in eine Variable
- auslesen des Dateinames in eine Variable für Dateiahang
Was funktioniert nicht:
Die Abarbeitung der Schleife, bei mehreren vorhandenen Dateien wird je vorhandener Datei ein Wert in die Variable eingetragen.
In den Variablen sollte jedoch nur die Werte der ersten Datei geschrieben werden.
Könnt ihr mir weiterhelfen?
Add-Type -Path ‘C:\pdf2mail\addon\itextsharp.dll’
$i = 1
Get-ChildItem "C:\pdf2mail\pdf" -Filter *.* |
Foreach-Object {
$reader = New-Object iTextSharp.text.pdf.pdfreader -ArgumentList $_.FullName
for ($page = 1; $page -le $reader.NumberOfPages; $page++)
{
$strategy = new-object 'iTextSharp.text.pdf.parser.SimpleTextExtractionStrategy'
$currentText = [iTextSharp.text.pdf.parser.PdfTextExtractor]::GetTextFromPage($reader, 1, $strategy);
[string[]]$Text = [system.text.Encoding]::UTF8.GetString([System.Text.ASCIIEncoding]::Convert( [system.text.encoding]::default , [system.text.encoding]::UTF8, [system.text.Encoding]::Default.GetBytes($currentText)));
}
$Reader.Close();
$text = $Text -replace "\s{1,}", ""
$separator = "vorEmail:","nachEmail"
$option = [System.StringSplitOptions]::RemoveEmptyEntries
$emailto = $text.Split($separator,$option)[1]
$emailto
}
$attachment = Get-ChildItem "C:\pdf2mail\pdf" -Filter *.* | select name
'$attachment'
$attachment
Output:
E-Mailadresse1
E-Mailadresse2
$attachment
Der Output sieht wie folgt aus:
E-Mailadresse1
E-Mailadresse2
$attachment
Name
----
PDF-name1
PDF-name2
Die Variablen auf den ersten Zeilenwert zu begrenzen mit funktioniert leider nicht wie erwartet.
Vielen Dank
Beginner2020
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 554582
Url: https://administrator.de/forum/powershell-schleifeproblem-variablen-werte-554582.html
Ausgedruckt am: 23.04.2025 um 00:04 Uhr
2 Kommentare
Neuester Kommentar
Hi,
Aufgabe ungenau formuliert.
Liefert jedes PDF genau eine Email-Adresse und soll dann jedes PDF einzeln an die daraus extrahierte Email-Adresse gesendet werden oder sollen mehrere PDF an nur eine Email-Adresse gesendet werden?
Falls erstes, dann sollte der Fehler in den Zeilen >23 liegen. Diese müssten dann noch vor dem "}" in Zeile 22. Zeile 24 müsste dabei angepasst werden, weil Du dann ja den Namen des zu sendenden PDFs bereits hast.
Sprich: Die Aktionen zum Versenden jedes einzelnen PDF's müssen in den Block oberhalb Zeile 22.
Tipp am Rande:
Rücke die Zeilen je Block ein, dann ist das übersichtlicher zu verstehen, besonders bei Logik-Fehlern.
Dein Text 1:1 würde dann so aussehen:
Du erkennst den Unterschied?
E.
Aufgabe ungenau formuliert.
Liefert jedes PDF genau eine Email-Adresse und soll dann jedes PDF einzeln an die daraus extrahierte Email-Adresse gesendet werden oder sollen mehrere PDF an nur eine Email-Adresse gesendet werden?
Falls erstes, dann sollte der Fehler in den Zeilen >23 liegen. Diese müssten dann noch vor dem "}" in Zeile 22. Zeile 24 müsste dabei angepasst werden, weil Du dann ja den Namen des zu sendenden PDFs bereits hast.
Sprich: Die Aktionen zum Versenden jedes einzelnen PDF's müssen in den Block oberhalb Zeile 22.
Tipp am Rande:
Rücke die Zeilen je Block ein, dann ist das übersichtlicher zu verstehen, besonders bei Logik-Fehlern.
Dein Text 1:1 würde dann so aussehen:
Add-Type -Path ‘C:\pdf2mail\addon\itextsharp.dll’
$i = 1
Get-ChildItem "C:\pdf2mail\pdf" -Filter *.* |
Foreach-Object {
$reader = New-Object iTextSharp.text.pdf.pdfreader -ArgumentList $_.FullName
for ($page = 1; $page -le $reader.NumberOfPages; $page++)
{
$strategy = new-object 'iTextSharp.text.pdf.parser.SimpleTextExtractionStrategy'
$currentText = [iTextSharp.text.pdf.parser.PdfTextExtractor]::GetTextFromPage($reader, 1, $strategy);
[string[]]$Text = [system.text.Encoding]::UTF8.GetString([System.Text.ASCIIEncoding]::Convert( [system.text.encoding]::default ,
[system.text.encoding]::UTF8, [system.text.Encoding]::Default.GetBytes($currentText)));
}
$Reader.Close();
$text = $Text -replace "\s{1,}", ""
$separator = "vorEmail:","nachEmail"
$option = [System.StringSplitOptions]::RemoveEmptyEntries
$emailto = $text.Split($separator,$option)[1]
$emailto
}
$attachment = Get-ChildItem "C:\pdf2mail\pdf" -Filter *.* | select name
'$attachment'
$attachment
Output:
E-Mailadresse1
E-Mailadresse2
$attachment
E.