Powershell - Auswertung per Mail verschicken - Formatierungsproblem
Guten Mittag an alle!
Ich kämpfe gerate mit einem vermutlich sehr simplen Syntaxprolem, finde aber leider keine Lösung egal wie ich es drehe und wende.
Info zum Skript, es liest jeden Abend aus welches (andere) Skript auf einem Server gelaufen ist, wann es wieder läuft und ob es erfolgreich war.
Dann schickt es ein Mail an einen Verteiler mit dem Ergebnis. Leider kommt der Output per Mail ziemlich unleserlich an und ich schaff es nicht das zu formatieren.
Vielleicht sieht einer von euch wo ich den Fehler gemacht habe !
P.s. sollte jemand das Skript für sich gebrauchen können - feel free to use it !
Skript:
$date = Get-Date
$sched = New-Object -Com "Schedule.Service"
$sched.Connect()
$out = @()
$sched.GetFolder("\").GetTasks(0) | % {
$xml = [xml]$_.xml
$out += New-Object psobject -Property @{
"Name" = $_.Name
"Status" = switch($_.State) {0 {"Unknown"} 1 {"Disabled"} 2 {"Queued"} 3 {"Ready"} 4 {"Running"}}
"NextRunTime" = $_.NextRunTime
"LastRunTime" = $_.LastRunTime
"LastRunResult" = $_.LastTaskResult
}
}
$UserMail = "Scriptinfo@xxx.at"
$smtp = "Mailserver"
$to = "Scriptinfo@xxx.at"
$from = "Scriptinfo@axxx.at"
$subject = "Skriptzusammenfassung von $date"
$body = "<font color=red>Report</font> <br>"
$body += Format-Table -InputObject $out -Property * | Out-String -Width ([int]::MaxValue)
Send-MailMessage -from $UserMail -to $UserMail -Subject "Skriptzusammenfassung von $date" -Body $body -BodyAsHtml -SmtpServer MainMailserverName
Beispiel wie der Output aussieht im Mail:
Status : Ready LastRunTime : 02.06.2015 23:20:00 Name : ActiveDirectoryOffboardingAutomati NextRunTime : 03.06.2015 23:20:00 LastRunResult : 0 Status : Ready LastRunTime : 02.06.2015 23:00:00 Name : AutoDisableComputers1 NextRunTime : 03.06.2015 23:00:00 LastRunResult : 0 Status : Ready LastRunTime : 02.06.2015 23:05:00 Name : AutoDisableUsersNeu NextRunTime : 03.06.2015 23:05:00 LastRunResult : 0 Status : Ready LastRunTime : 02.06.2015 23:10:00 Name : LyncTelefonKlappenExport NextRunTime : 03.06.2015 23:10:00 LastRunResult : 0 Status : Disabled LastRunTime : 29.05.2015 14:17:28 Name : Optimize Start Menu Cache Files-S-1-5-21-1203159950-51644421-2948905077-9863 NextRunTime : 30.12.1899 00:00:00 LastRunResult : 0 Status : Ready LastRunTime : 02.06.2015 23:55:00 Name : Taskreport NextRunTime : 03.06.2015 23:55:00 LastRunResult : 0
Für jede Hilfe Dankbar !!
Lg. Sven
Ich kämpfe gerate mit einem vermutlich sehr simplen Syntaxprolem, finde aber leider keine Lösung egal wie ich es drehe und wende.
Info zum Skript, es liest jeden Abend aus welches (andere) Skript auf einem Server gelaufen ist, wann es wieder läuft und ob es erfolgreich war.
Dann schickt es ein Mail an einen Verteiler mit dem Ergebnis. Leider kommt der Output per Mail ziemlich unleserlich an und ich schaff es nicht das zu formatieren.
Vielleicht sieht einer von euch wo ich den Fehler gemacht habe !
P.s. sollte jemand das Skript für sich gebrauchen können - feel free to use it !
Skript:
- Auslesen der aktiven Scheduled tasks auf .\
$date = Get-Date
$sched = New-Object -Com "Schedule.Service"
$sched.Connect()
$out = @()
$sched.GetFolder("\").GetTasks(0) | % {
$xml = [xml]$_.xml
$out += New-Object psobject -Property @{
"Name" = $_.Name
"Status" = switch($_.State) {0 {"Unknown"} 1 {"Disabled"} 2 {"Queued"} 3 {"Ready"} 4 {"Running"}}
"NextRunTime" = $_.NextRunTime
"LastRunTime" = $_.LastRunTime
"LastRunResult" = $_.LastTaskResult
}
}
- Verschicke das ganze als Mail
$UserMail = "Scriptinfo@xxx.at"
$smtp = "Mailserver"
$to = "Scriptinfo@xxx.at"
$from = "Scriptinfo@axxx.at"
$subject = "Skriptzusammenfassung von $date"
$body = "<font color=red>Report</font> <br>"
- UNd hier muss irgendwie der Hund begraben sein - Output geht aber es kommt als grausme reihe heraus die nicht lesbar ist:
$body += Format-Table -InputObject $out -Property * | Out-String -Width ([int]::MaxValue)
Send-MailMessage -from $UserMail -to $UserMail -Subject "Skriptzusammenfassung von $date" -Body $body -BodyAsHtml -SmtpServer MainMailserverName
Beispiel wie der Output aussieht im Mail:
Status : Ready LastRunTime : 02.06.2015 23:20:00 Name : ActiveDirectoryOffboardingAutomati NextRunTime : 03.06.2015 23:20:00 LastRunResult : 0 Status : Ready LastRunTime : 02.06.2015 23:00:00 Name : AutoDisableComputers1 NextRunTime : 03.06.2015 23:00:00 LastRunResult : 0 Status : Ready LastRunTime : 02.06.2015 23:05:00 Name : AutoDisableUsersNeu NextRunTime : 03.06.2015 23:05:00 LastRunResult : 0 Status : Ready LastRunTime : 02.06.2015 23:10:00 Name : LyncTelefonKlappenExport NextRunTime : 03.06.2015 23:10:00 LastRunResult : 0 Status : Disabled LastRunTime : 29.05.2015 14:17:28 Name : Optimize Start Menu Cache Files-S-1-5-21-1203159950-51644421-2948905077-9863 NextRunTime : 30.12.1899 00:00:00 LastRunResult : 0 Status : Ready LastRunTime : 02.06.2015 23:55:00 Name : Taskreport NextRunTime : 03.06.2015 23:55:00 LastRunResult : 0
Für jede Hilfe Dankbar !!
Lg. Sven
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 273682
Url: https://administrator.de/contentid/273682
Ausgedruckt am: 25.11.2024 um 19:11 Uhr
2 Kommentare
Neuester Kommentar
Moin,
weil Tabellen ohne die richtigen Tags in HTML eben nicht wie Tabellen dargestellt werden
Gruß jodel32
weil Tabellen ohne die richtigen Tags in HTML eben nicht wie Tabellen dargestellt werden
$body += $out | Convertto-HTML -Fragment -As Table