none
PowerShell Befehle einmal im Monat Ausführen und als Ausgabe im Body per E-Mail verschicken

    Frage

  • Hallo zusammen,

    da ich kein PowerShell Profi bin und auch weit davon entfernt bin, wollte ich die Frage hier stellen, mit der Hoffnung das mir jemand helfen kann

    Wie kann ich mir diese 3 Befehle automatisch am Ende des Monates als Ausgabe zuschicken lassen?

    (get-transportserver | Get-MessageTrackingLog -ResultSize unlimited -Start "10.01.2017 00:00:00" -End "10.31.2017 23:59:00" -EventId send).count

    (get-transportserver | Get-MessageTrackingLog -ResultSize unlimited -Start "10.01.2017 00:00:00" -End "10.31.2017 23:59:00" -EventId receive).count

    (get-mailbox -ResultSize Unlimited).count

    Wir haben Exchange 2010 SP3 UR18 im Einsatz

    Vorab Danke für jede Info

    Donnerstag, 7. Dezember 2017 09:35

Alle Antworten

  • Hallo Maik,

    Das geht sicherlich über einen Scheduled Task, der das Script ausführen soll.

    Donnerstag, 7. Dezember 2017 10:18
  • Hallo Joe,

    ja das ist schon klar.

    Ich weiß nur nicht wie ich das zusammen packen soll.

    Donnerstag, 7. Dezember 2017 10:48
  • Einen ähnlichen Thread gibt es hier schon mal.
    Hier wurde auch eine ps1 als Task eingerichtet und eine Mail versandt.
    Dabei gibt es 2 Möglichkeiten:
    - Versand über die integrierte SMTP-Funktionen (falls vom Exchange unterstützt).
    - Aufruf von Outlook als Mailclient, was allerdings höchste Berechtigung voraussetzt.

    Donnerstag, 7. Dezember 2017 12:09
  • Lass eine .ps1 mit dem Task Scheduler zum gewüschten Zeitpunkt ausführen.

    In dem Skript zuerst das Exchange Snapin laden:

    Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010

    Danach speicherst du die Ausgabe deiner Befehle in Variablen (z.b. $var1, $var2, $var3).

    Dann die Mail so oder so ähnlich versenden:

    send-mailmessage -to "Empfänger <empfänger@domain.tld>" -from "Sender <sender@domain.tld>" -subject "Betreff" -Body "$var1 $( [System.Environment]::NewLine ) $var2 $( [System.Environment]::NewLine ) $var3" -SmtpServer server.domain(.local)

    Donnerstag, 7. Dezember 2017 13:24
  • In dem Skript zuerst das Exchange Snapin laden:

    Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010

    Das ist aber 1. nicht supportet und 2. muss die EMS in PowerShell 2.0 ausgeführt werden. Der korrekte und portable Weg führt über PowerShell Remoting, ist von den installierten Exchange-Tools unabhängig und funktioniert mit jeder PowerShell-Version:

    $sess = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://<Exchange Server>/PowerShell -Authentication Kerberos
    Import-PSSession $sess

    und am Ende:

    Remove-PSSession $sess


    Evgenij Smirnov

    I work @ msg services ag, Berlin -> http://www.msg-services.de
    I blog (in German) @ http://it-pro-berlin.de
    my stuff in PSGallery --> https://www.powershellgallery.com/profiles/it-pro-berlin.de/
    Exchange User Group, Berlin -> http://exusg.de
    Windows Server User Group, Berlin -> http://www.winsvr-berlin.de
    Mark Minasi Technical Forum, reloaded -> http://newforum.minasi.com

    Donnerstag, 7. Dezember 2017 19:32