E-Mail Versand Powershell, -body Variable auslesen
Guten Morgen,
ich glaube ich steh ein wenig auf dem Schlauch. Ich will eine E-Mail versenden und habe ein Problemchen. Ich hoffe Ihr könnt mir dabei helfen.
Ich will als Body von der E-Mail eine Log Datei versenden (ohne Anhang). Diese lese ich vorher in eine Variable ein und füge es später bei -body ein.
Inmoment sieht es so aus:
$EmailBody=Get-Content c:\scripts\log\log.txt
Send-MailMessage -To <<Empfänger>> -from <<Absender>> -SmtpServer mail.gmx.net -Subject "LogDatei" -Body $EmailBody -UseSsl -Credential $creds
Wenn ich das Script ausführe kommt die Fehlermeldung:
Send-MailMessage : "System.Object" kann nicht in den Typ "System.String" konvertiert werden, der für den Parameter "Body" erforderlich ist. Die angegebene Methode wird nicht unterstützt.
Bei Zeile:2 Zeichen:118
Send-MailMessage -To <<Empfänger>> -from <<Absender>> -SmtpServer mail.gmx.net -Subject "LogDatei" -Body <<<< $EmailBody -UseSsl -Credential $creds
CategoryInfo : InvalidArgument: (: ) [Send-MailMessage], ParameterBindingException
FullyQualifiedErrorId : CannotConvertArgument,Microsoft.PowerShell.Commands.SendMailMessage
(Hab natürlich Empfänger und Absender anonymisiert... da stehen tatsächlich E-Mail Adressen drin)
Ich benutze Das Script ziemlich oft, aber diese Konstellation hatte ich noch nicht. Wie kann ich den Variablen Inhalt in String Konvertieren?!
Ich hoffe Ihr könnt mir ein wenig weiterhelfen.
Infos:
- Windows Server 2008 R2
- Windows Powershell ISE Host Version 2.0
- E-Mail Versand funktioniert einwandfrei (nur Body macht Probleme)
(P.S: Sorry für die Formatierung... ist noch ziemlich früh heute morgen )
ich glaube ich steh ein wenig auf dem Schlauch. Ich will eine E-Mail versenden und habe ein Problemchen. Ich hoffe Ihr könnt mir dabei helfen.
Ich will als Body von der E-Mail eine Log Datei versenden (ohne Anhang). Diese lese ich vorher in eine Variable ein und füge es später bei -body ein.
Inmoment sieht es so aus:
$EmailBody=Get-Content c:\scripts\log\log.txt
Send-MailMessage -To <<Empfänger>> -from <<Absender>> -SmtpServer mail.gmx.net -Subject "LogDatei" -Body $EmailBody -UseSsl -Credential $creds
Wenn ich das Script ausführe kommt die Fehlermeldung:
Send-MailMessage : "System.Object" kann nicht in den Typ "System.String" konvertiert werden, der für den Parameter "Body" erforderlich ist. Die angegebene Methode wird nicht unterstützt.
Bei Zeile:2 Zeichen:118
Send-MailMessage -To <<Empfänger>> -from <<Absender>> -SmtpServer mail.gmx.net -Subject "LogDatei" -Body <<<< $EmailBody -UseSsl -Credential $creds
CategoryInfo : InvalidArgument: (: ) [Send-MailMessage], ParameterBindingException
FullyQualifiedErrorId : CannotConvertArgument,Microsoft.PowerShell.Commands.SendMailMessage
(Hab natürlich Empfänger und Absender anonymisiert... da stehen tatsächlich E-Mail Adressen drin)
Ich benutze Das Script ziemlich oft, aber diese Konstellation hatte ich noch nicht. Wie kann ich den Variablen Inhalt in String Konvertieren?!
Ich hoffe Ihr könnt mir ein wenig weiterhelfen.
Infos:
- Windows Server 2008 R2
- Windows Powershell ISE Host Version 2.0
- E-Mail Versand funktioniert einwandfrei (nur Body macht Probleme)
(P.S: Sorry für die Formatierung... ist noch ziemlich früh heute morgen )
Please also mark the comments that contributed to the solution of the article
Content-ID: 240975
Url: https://administrator.de/contentid/240975
Printed on: October 13, 2024 at 10:10 o'clock
3 Comments
Latest comment
Hallo,
alternativ sollte auch das funktionieren:
Gruß
ANKH
Nachtrag: Habe beide Varianten eben mal mit größeren Textdateien durchgespielt. Die Variante 2 läuft hier deutlich schneller (ca. Faktor 3). Ist vielleicht für längere Logfiles interessant.
alternativ sollte auch das funktionieren:
$EmailBody=(Get-Content c:\scripts\log\log.txt).ToString()
Gruß
ANKH
Nachtrag: Habe beide Varianten eben mal mit größeren Textdateien durchgespielt. Die Variante 2 läuft hier deutlich schneller (ca. Faktor 3). Ist vielleicht für längere Logfiles interessant.