none
PC Name wird ignoriert beim versenden von Emails RRS feed

  • Frage

  • Hallo zusammen,

    ich habe ein merkwürdiges Problem und komm damit nicht weiter, vllt sieht irgendjemand den Fehler. Also das Script soll nichts weiter machen als ein paar vordefinierte Dienste abfragen und eine Email schicken mit denen die gestoppt und gestartet sind.

    Im Subject dieser Mail die versendet werden soll, soll der Servername - Dienste - Datum/Uhrzeit stehen. Lasse ich die Variable für den Servernamen raus funktioniert es und mir wird eine Email geschickt aber mit wenn mir der Servername mitgeschickt werden soll bekomme ich keine Email, selbst wenn ich einfach den Namen (an der stelle $mailmessage.Subject = ) des Servers eintrage wird mir keine Mail geschickt. Ich kann alles mögliche eintragen was dann auch im subject Feld erscheint nur den Servernamen mag er nicht.

    [array] $arBody 
    $arBody = $null 
    
    # Dienste die abgefragt werden sollen 
    $servicesArray = ('MSSQLSERVER','SQLSERVERAGENT','SQLBrowser', 'ReportServer', 'SQLWriter', 'MCShield', 'IISADMIN' ) 
     
    foreach ($i in $servicesArray) { 
     
    $colItems = Get-WmiObject -query "Select * From Win32_Service where name = '$i'" 
    foreach ($objItem in $colItems) { 
    
        if ($objItem.state -ne "Running") { 
               
               $arbody = $arBody +  "`n<Font color='red'>Der Dienst <b>$i</b> ist nicht gestartet! </font><BR />" + [char]13 + [char]10 
            } 
        else 
            { 
                $arbody = $arBody +  "`nDer Dienst $i ist gestartet. <BR />"+ [char]13 + [char]10  
            }     
    }  
    } 
    $edate = Get-Date
    $Server = get-content env:computername
    
    function sendmail($body)
    {
    $SmtpClient = new-object system.net.mail.smtpClient
    $MailMessage = New-Object system.net.mail.mailmessage
    $SmtpClient.Host = "exchangeserver.domain.local"
    $mailmessage.from = "Admin@domain.local"
    $mailmessage.To.add("zumir@domain.local")
    $mailmessage.Subject = "$Server - Dienste - $eDate"
    $MailMessage.IsBodyHtml = $True
    $mailmessage.Body = $body
    $smtpclient.Send($mailmessage)
    }
    $body = "$arBody"
    sendmail $body

    Gruß
    Markus

    Mittwoch, 14. August 2013 16:44

Antworten

  • Ich habs hier mal getestet, funktioniert problemlos.Ich kann mir nur vorstellen das es irgendwas mit euerm Exchange zu tun hat. Seltsame Filter? Ist der Server vielleicht unüblich benannt?

    Nebenbei: das auslesen des Servernamens ist bei dir etwas ungewöhnlich (aber nicht falsch). Allerdings würde

    $Server = $env:computername  bzw. gleich $($env:computername) direkt im Subjekt

    auch reichen.

    Grüße, Denniver


    Blog: http://bytecookie.wordpress.com

    Hilf mit und markiere gute Beiträge mit dem "Abstimmen"-Button (links) und Beiträge die eine Frage von dir beantwortet haben, als "Antwort" (unten).
    Warum das Ganze? Hier gibt die Antwort.


    Mittwoch, 14. August 2013 17:33
    Moderator

Alle Antworten

  • Ich habs hier mal getestet, funktioniert problemlos.Ich kann mir nur vorstellen das es irgendwas mit euerm Exchange zu tun hat. Seltsame Filter? Ist der Server vielleicht unüblich benannt?

    Nebenbei: das auslesen des Servernamens ist bei dir etwas ungewöhnlich (aber nicht falsch). Allerdings würde

    $Server = $env:computername  bzw. gleich $($env:computername) direkt im Subjekt

    auch reichen.

    Grüße, Denniver


    Blog: http://bytecookie.wordpress.com

    Hilf mit und markiere gute Beiträge mit dem "Abstimmen"-Button (links) und Beiträge die eine Frage von dir beantwortet haben, als "Antwort" (unten).
    Warum das Ganze? Hier gibt die Antwort.


    Mittwoch, 14. August 2013 17:33
    Moderator
  • danke fürs testen Denniver, ich hatte schon so langsam an mir gezweifelt 😄 zu deinen fragen: der exchange heisst ganz einfach nur exchange.domain.local und der servername den es auszulesen gilt heisst auch einfach nur wsus.domain.local, zu den filtern kann ich noch nix sagen die muss ich mir morgen mal anschauen. Zu dem merkwürdigen auslesen des servernamen kann ich dir nur sagen das das die letzte Methode war die mir eingefallen ist um an den servernamen zu kommen :) Ich hatte auch deine deutlich kürzere Variante getestet, da ich aber dachte das es daran liegen könnt habe ich alles möglich getestet. Ich habe sogar den Servernamen erst in eine txt datei geschrieben um ihn dann wieder auszulesen, weil ich dachte so funktioniert es :) Mittlerweile glaube ich aber auch das es am exchange liegen muss da die variable wo "$servername -dienste -$edate" in der powershell console die richtigen werte zurück liefert gruß markus
    Mittwoch, 14. August 2013 18:28
  • folgendes habe ich gerade herausgefunden, er versendet nur keine Email mit dem Servernamen wenn ich die mail per Script an mich selber schicke, wenn ich es an einen Verteiler oder jemand anders sende funktioniert es... Warum wieso weshalb, keine Ahnung.

    Es sollte somit auch nicht unbedingt am Exchange Server selber liegen sondern ehr an meinem eigenen Postfach, ich finde nur keinen Unterschied zu den anderen Postfächern wo es funktioniert....

    Mittwoch, 14. August 2013 20:16