marco893
Goto Top

Programm Ordnerüberwachung und E-Mail Versand anhand Dateiinhalt

Hallo Communitiy,

ich hoffe ihr könnt mir weiterhelfen.
Für einen kleinen Versuchsaufbau benötige ich ein Programm oder Script, welches ein bestimmtes Verzeichnis alle xMinuten/Sekunden auf neue Dateien überwacht.
Sollte eine neue Textdatei im Verzeichnis sein, müsste diese Datei an eine darin stehende E-mail Adresse gesendet werden. (Versand via Outlook oder anderes e-mail Programm)

Beispiel:
Zeile 1 der Texdatei mail@xyz.de ---- sende Datei an mail@xyz.de
Zeile 2 und Weitere Text der Nachricht

Zum Schluss sollte die Gesendete Datei dann noch gelöscht werden.


Über Ratschläge Eurerseits würde ich mich sehr freuen.

Marco

Content-Key: 520347

Url: https://administrator.de/contentid/520347

Ausgedruckt am: 29.03.2024 um 15:03 Uhr

Mitglied: 141965
141965 29.11.2019 aktualisiert um 18:28:08 Uhr
Goto Top
Mitglied: Marco893
Marco893 29.11.2019 um 18:48:07 Uhr
Goto Top
Danke für die schnelle Antwort,

aber bei den Lösungen wird die Datei immer an eine im Programm festgelegte e-mail adresse gesendet.
Ich müsste aber die Datei an nicht zuvor festgelegte Empfänger senden.
Der Empänger wäre bei mir der Dateiname oder würde in der Datei beispielsweise in Zeile 1stehen.
Mitglied: 141965
Lösung 141965 29.11.2019, aktualisiert am 30.11.2019 um 09:16:24 Uhr
Goto Top
Na und? Auslesen einer Textdatei ist doch Pillepalle mit Powershell ein Einzeiler, dafür braucht man doch keinen Thread in einem Admin-Forum?!
$ordner = "d:\dateien"  
$ziel = "d:\Archiv"  
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::GetNames([System.Net.SecurityProtocolType])

Get-ChildItem $ordner -File -Filter *.txt | %{
    $content = Get-Content $_.Fullname
    $mail = $content
    $body = $content | select -skip 1 | out-string
    Send-Mailmessage -to $mail -from user@domain.tld -subject Blablub -Body $body -SmtpServer server.domain.tld -Port 587 -UseSSL -Credential (New-Object PSCredential ('USERNAME',(ConvertTo-SecureString 'PASSWORD' -AsPlaintext -Force)))  
    move-item $_.Fullname -Destination $ziel
}
Mitglied: Marco893
Marco893 29.11.2019 um 22:59:44 Uhr
Goto Top
Tut mir Leid, aber ich kenne mich mit diesem Thema nicht aus.
Weitergekommen bin ich auch noch nicht, mir werden nach Anpassung des Scripts folgende Fehler ausgegeben:

$ordner = "C:\Test"

$ziel = "C:\Arciv"

Get-ChildItem $ordner -File -Filter *.txt | %{

$content = Get-Content $_.Fullname

$mail = $content

$body = $content | select -skip 1 | out-string

Send-Mailmessage -to $mail -from xxxx -subject Blablub -Body $body -SmtpServer smtp.gmail.com -Port 465 -UseSSL -Credential (New-Object PSCredential ('xxxx',(ConvertTo-SecureString 'xxxx' -AsPlaintext -Force)))

move-item $_.Fullname -Destination $archiv

}
Send-Mailmessage : Von der Übertragungsverbindung können keine Daten gelesen werden: net_io_connectionclosed.
In Zeile:13 Zeichen:5

back-to-topSend-Mailmessage -to $mail -from xxxx -subject Blab ...

back-to-top~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ CategoryInfo : InvalidOperation: (System.Net.Mail.SmtpClient:SmtpClient) [Send-MailMessage], SmtpExcept
ion
+ FullyQualifiedErrorId : SmtpException,Microsoft.PowerShell.Commands.SendMailMessage

move-item : Das Argument kann nicht verarbeitet werden, da der Wert des Arguments "destination" NULL ist. Ändern Sie
den Wert des Arguments "destination" in einen Wert ungleich NULL.
In Zeile:15 Zeichen:5

back-to-topmove-item $_.Fullname -Destination $archiv

back-to-top~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ CategoryInfo : InvalidArgument: (face-smile [Move-Item], PSArgumentNullException
+ FullyQualifiedErrorId : ArgumentNull,Microsoft.PowerShell.Commands.MoveItemCommand
Mitglied: 141965
141965 30.11.2019 aktualisiert um 09:17:52 Uhr
Goto Top
Port 587 funktioniert über die PS bei Gmail besser. Bei Gmail hast du wohl auch nicht die Einstellung gesetzt das unsichere Apps verwendet werden dürfen.
https://support.google.com/cloudidentity/answer/6260879?hl=en
Klappt hier nämlich damit einwandfrei.
Der andere Fehler war ein Variablen-Tippfehler meinerseits, ist korrigiert, und für den Fall das die PS hier wegen SSL meckert die TLS Protokolle aktualisiert.
Ansonsten kennt hier keiner deine Textdatei und deren Inhalt. Lass dir die Variablen ausgeben und feddich is die choose.
Mitglied: Marco893
Marco893 30.11.2019 um 09:33:11 Uhr
Goto Top
Perfekt, Danke klappt alles!