Hallo zusammen,
leider gibt es keine "Dienstunterstützung" für den Birthdaymailer und mit dem Programm RunAsSvc scheint der Birthdaymailer auch nicht zuverlässig zu funktionieren. Deshalb habe ich ein Skript geschrieben, der den Start vor dem Email Versand initiiert.
Zum Hintergrund:
Bei uns läuft der Birthdaymailer auf einem Windows Server 2008 R2. Ein lokaler Benutzer "birthdaymailer" wurde eingerichtet.
Wenn ein Benutzer angemeldet ist, läuft der Prozess bmstart.exe im Hintergrund. Um 8:00 Uhr wird das Hauptprogramm Birthdaymailer (bm.exe) gestartet und die entsprechenden Emails versendet. Danach schließt sich das Programm wieder, sofern keine Fehlermeldung erscheint. Komischerweise bleibt das Programm auch ohne Fehlermeldung manchmal offen. Das Problem hierbei ist, dass am folgenden Tag keine Emails verschickt werden, solange das Hauptprogramm geöffnet ist.
Das Skript meldet den Benutzer per RDP an den Server an. Bei der Anmeldung wird, wie bereits erwähnt, automatisch der Prozess bmstart.exe geladen. Wenn das Hauptprogramm noch offen ist, wird dies automatisch geschlossen und der Benutzer wird vom Server getrennt (nicht abgemeldet).
Es handelt sich um ein Powershell Skript und sieht so aus:
Code: Alles auswählen
$servername = "server"
$passwort = "birthdaymailer"
Function Open-RDPSession($Server,$User,$Password)
{
Write-Host "- saving RDP credential" -ForegroundColor green
cmdkey /SPAMWORT:$server /user:$user /pass:$Password
write-Host "- opening RDP" -ForegroundColor green
mstsc /v:$Server /W:800 /h:600
}
$username = "domain\birthdaymailer"
Open-RDPSession $servername $username $passwort
Start-Sleep -s 80
qwinsta /server:$servername | ?{$_ -match "birthdaymailer"} | ?{$_ -match "rdp-tcp#\d*"} | %{tsdiscon $matches[0]}
Start-Sleep -s 5
Get-Process bm | Kill
write-host "close mstsc task" -ForegroundColor green
Get-Process mstsc | Kill
write-host "delete rdp credentials" -ForegroundColor green
cmdkey /delete $servername
In meinen Blog findet ihr den Code auch mit Syntaxhighlighting:
http://codingstube.de/2013/09/rdp-sitzu ... n-trennen/
Das Skript wird dann unter den Admin Credentials über die geplante Task ca. 15 Minuten vor dem Emailversand gestartet.
Zurzeit läuft das Skript noch in einer Testphase, aber ich bin optimistisch
Ich hoffe, dass ich hiermit dem ein oder anderen helfen kann.