PowerShell - Verschiedene Mitteilungen in einer Mail-Funktion
Windows Server 2008 R2
Ich möchte mit der PowerShell ein Skript schreiben, mit welchem ich mit Hilfe einer If- Else Abfrage meiner Mail-Funktion verschiedene Werte übergebe.
Hi,
ich überprüfe mit meinem Skript, ob ein Programm ein aktuelles Logfile geschrieben hat.
Das Programm schreibt das Logfile im Format tt.mm.yyyy.log
Mein Skript sieht bisher so aus:
Problem ist nun , dass mir die PS einen Fehler ausgibt, wenn das Logfile anders als definiert heißt oder nicht existiert.
Was mache ich hier falsch?
Freue mich auf jede Antwort.
Grüße
Tray
Ich möchte mit der PowerShell ein Skript schreiben, mit welchem ich mit Hilfe einer If- Else Abfrage meiner Mail-Funktion verschiedene Werte übergebe.
Hi,
ich überprüfe mit meinem Skript, ob ein Programm ein aktuelles Logfile geschrieben hat.
Das Programm schreibt das Logfile im Format tt.mm.yyyy.log
Mein Skript sieht bisher so aus:
$Hostname = "Rechner"
# SMTP Server IP
$SMTPHostIP = "0.0.0.0"
# Absender E-Mail Adresse
$Absender = "test@example.com"
# Empfänder E-Mail Adresse
$Empfaenger = "tray@example.com"
# Variablen für Funktion "Status" #
# Variablen für das Senden der Software-Log als Anhang
# Datumsdefinition Software-Log
$LogFileDatum = get-date -uformat "%d.%m.%Y.log"
# Pfad zum Software-Log
$LogFilePfad = "d:\Software\$LogFileDatum"
# ------------------------------------------------------------------------------------------------------------------ #
# Anfang Funktion Status
function Send-Status($Softwarename)
{
$SmtpClient = new-object system.net.mail.smtpClient
$MailMessage = new-Object system.net.mail.mailmessage
$att = new-object Net.Mail.Attachment($LogFilePfad)
$SmtpClient.Host = $SMTPHostIP
$mailmessage.from = $Absender
$mailmessage.To.add($Empfaenger)
$mailmessage.Subject = “$BodyJobInfo”
$MailMessage.IsBodyHtml = $true
$mailmessage.Body = "$Software"
$mailmessage.Attachments.Add($att)
$smtpclient.Send($mailmessage)
}
# Ende Funktion Status
# ------------------------------------------------------------------------------------------------------------------ #
# Status der Software wird gesendet
if (test-path $LogFilePfad)
{
$BodyJobInfo = "OKAY Software funktioniert"
write-host "Sende Mail Software-Okay"
Send-Status $Software $BodyJobInfo
}
else
{
$BodyJobInfo = "ERROR Software funktioniert nicht"
write-host "Sende Mail Software-Nicht-Okay"
Send-Status $Software $BodyJobInfo
}
# ------------------------------------------------------------------------------------------------------------------ #
New-Object : Ausnahme beim Aufrufen von ".ctor" mit 1 Argument(en): "Die Datei "K:\2ChartaWork\Logs\jobinstest\09.12.20102.log" konnte nicht gefunden werden."
Bei C:\Users\Administrator\Desktop\2Charta\Funktionen.ps1:37 Zeichen:26
+ $att = new-object <<<< Net.Mail.Attachment($JobDateiPfad)
+ CategoryInfo : InvalidOperation: (:) [New-Object], MethodInvocationException
+ FullyQualifiedErrorId : ConstructorInvokedThrowException,Microsoft.PowerShell.Commands.NewObjectCommand
Ausnahme beim Aufrufen von "Add" mit 1 Argument(en): "Der Wert darf nicht NULL sein.
Parametername: item"
Bei C:\Users\Administrator\Desktop\2Charta\Funktionen.ps1:44 Zeichen:37
+ $mailmessage.Attachments.Add <<<< ($att)
+ CategoryInfo : NotSpecified: (:) , MethodInvocationException
+ FullyQualifiedErrorId : DotNetMethodException
Freue mich auf jede Antwort.
Grüße
Tray
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 156629
Url: https://administrator.de/contentid/156629
Ausgedruckt am: 25.11.2024 um 13:11 Uhr
14 Kommentare
Neuester Kommentar
Hi,
das Problem ist folgendes:
Du versuchst eine Datei zu versenden die nicht existiert.
Du kannst folgendes machen, einfach eine IF Bedingung in deine "Send-Status" Funktion, den müsste es funktionieren.
Gruß Miyamoto
das Problem ist folgendes:
Du versuchst eine Datei zu versenden die nicht existiert.
Du kannst folgendes machen, einfach eine IF Bedingung in deine "Send-Status" Funktion, den müsste es funktionieren.
# ------------------------------------------------------------------------------------------------------------------ #
# Anfang Funktion Status
function Send-Status($Softwarename)
{
$SmtpClient = new-object system.net.mail.smtpClient
$MailMessage = new-Object system.net.mail.mailmessage
if (test-path $LogFilePfad)
{
$att = new-object Net.Mail.Attachment($LogFilePfad)
}
$SmtpClient.Host = $SMTPHostIP
$mailmessage.from = $Absender
$mailmessage.To.add($Empfaenger)
$mailmessage.Subject = “$BodyJobInfo”
$MailMessage.IsBodyHtml = $true
$mailmessage.Body = "$Software"
$mailmessage.Attachments.Add($att)
$smtpclient.Send($mailmessage)
}
# Ende Funktion Status
# ------------------------------------------------------------------------------------------------------------------ #
Gruß Miyamoto
Hi,
versuch das Bitte noch mal:
Gruß Miyamoto
versuch das Bitte noch mal:
# ------------------------------------------------------------------------------------------------------------------ #
# Anfang Funktion Status
function Send-Status($Softwarename)
{
$SmtpClient = new-object system.net.mail.smtpClient
$MailMessage = new-Object system.net.mail.mailmessage
if (test-path $LogFilePfad)
{
$att = new-object Net.Mail.Attachment($LogFilePfad)
}
$SmtpClient.Host = $SMTPHostIP
$mailmessage.from = $Absender
$mailmessage.To.add($Empfaenger)
$mailmessage.Subject = “$BodyJobInfo”
$MailMessage.IsBodyHtml = $true
$mailmessage.Body = "$Software"
if (test-path $LogFilePfad)
{
$mailmessage.Attachments.Add($att)
}
$smtpclient.Send($mailmessage)
}
# Ende Funktion Status
# ------------------------------------------------------------------------------------------------------------------ #
Gruß Miyamoto
Hi,
also ich habe es noch mal in einem kleinen versuch nach gebaut.
Also Funktion und Aufruf und so, und bei mir klappt es so Fehler frei:
Gruß Miyamoto
also ich habe es noch mal in einem kleinen versuch nach gebaut.
Also Funktion und Aufruf und so, und bei mir klappt es so Fehler frei:
#Funktion
function Send-Status($Softwarename, $ping1, $ping2, $ping3) {
Write-Host $Softwarename
Write-Host $ping1
Write-Host $ping2
Write-Host $ping3
Write-Host
Write-Host $Softwarename "`r`n" $ping1 "`r`n" $ping2 "`r`n" $ping3
}
# Variablen
$Software="notepade"
$pingServer1="127.0.0.1"
$pingServer2="localhost"
#Funktionsaufruf
Send-Status ($Software, $pingServer1, $pingServer2,"192.168.0.1")
Gruß Miyamoto