E-Mail senden wenn Computer online ist

Manchmal wartet man als Administrator darauf, dass ein Computer eingeschaltet wird, um remote Installationen daran vorzunehmen. Daher habe ich das folgende Powershell-Skript geschrieben, welches eine E-Mail sendet, sobald ein Computer im Netzwerk erreichbar ist.

DQo8cD48YnIvPg0KPHNjcmlwdCBhc3luYyBzcmM9Imh0dHBzOi8vcGFnZWFkMi5nb29nbGVzeW5kaWNhdGlvbi5jb20vcGFnZWFkL2pzL2Fkc2J5Z29vZ2xlLmpzIj48L3NjcmlwdD4NCjwhLS0gVEVDSEZBUSAtIEltIEFydGlrZWwgLS0+DQo8aW5zIGNsYXNzPSJhZHNieWdvb2dsZSINCiAgICAgc3R5bGU9ImRpc3BsYXk6YmxvY2siDQogICAgIGRhdGEtYWQtY2xpZW50PSJjYS1wdWItOTI5NDg1MzEyMDc1NDI3OSINCiAgICAgZGF0YS1hZC1zbG90PSI1MDc3NjQ3MTY5Ig0KICAgICBkYXRhLWFkLWZvcm1hdD0iYXV0byINCiAgICAgZGF0YS1mdWxsLXdpZHRoLXJlc3BvbnNpdmU9InRydWUiPjwvaW5zPg0KPHNjcmlwdD4NCiAgICAgKGFkc2J5Z29vZ2xlID0gd2luZG93LmFkc2J5Z29vZ2xlIHx8IFtdKS5wdXNoKHt9KTsNCjwvc2NyaXB0Pjxici8+PC9wPg0K

Powershell Skript informiert, wenn PC eingeschaltet wurde

Im konkreten Fall sollte eine Anwendung von allen PCs entfernt werden, was wunderbar über die Webconsole der Software funktionierte. Voraussetzung dafür war logischer Weise, dass der jeweilige Client im Netzwerk erreichbar war. Wenn ein Teil der PCs aber nur temporär in Verwendung ist, kann sich das jedoch etwas hinziehen. Wie praktisch wäre es dann, wenn man einfach eine E-Mail bekommt, sobald ein Computer eingeschaltet wurde.

Das lässt sich natürlich wunderbar mit der Windows Powershell lösen. Das nachfolgende Skript definiert zunächst den zu überwachenden Computernamen, sowie für den Emailversand die Empfangs-/Sendeadresse und den Mailserver. Statt des Computernamens funktioniert natürlich auch eine IP-Adresse. Wichtig ist, dass das ICMP-Protokoll nicht durch die (Windows) Firewall geblockt wird – sprich: der Ping muss möglich sein.

$computername = "Win11-PC"
$to = "empfänger@domain.tld"
$from = "sender@domain.tld"
$mailserver = "mailserver.domain.tld"

Write-Host "Warte auf Verbindung zu Computer $computername"
while (!(Test-Connection $computername -Count 1 -quiet)){
    sleep(5)
}
Send-MailMessage -To $to -Subject "$computername ist online" -SmtpServer $mailserver -from $from

So funktioniert das Skript

Das Skript durchläuft eine Schleife, in welcher alle 5 Sekunden die Verbindung zu dem Computernamen per „Test-Connection“ (ping) getestet wird. Solange dieses fehlschlägt, wird das endlos so fortgeführt. Sobald die Verbindung allerdings da ist, also eine Antwort auf „Test-Connection“ erfolgt, wird die while-Schleife beendet und die E-Mail versendet. Das Skript wird daraufhin beendet.

Die nachfolgenden Bilder verdeutlichen das Ganze nochmal:

E-Mail senden wenn Computer online ist
Überprüfung des Status des Computers

Wird der Computer eingeschaltet und ist im Netzwerk erreichbar, schließt sich das Fenster und man erhält in seinem E-Mailclient eine neue Nachricht.

Per E-Mail informieren, wenn ein PC eingeschaltet wurde
Der PC wurde eingeschaltet und die entsprechende Mail empfangen.

Das Skript funktioniert mit sämtlichen Geräten im Netzwerk, die eine Antwort auf einen Ping zurückgeben. Also neben Computern und Servern auch für Switche, Drucker, usw.

Ebenfalls interessant:

Dieser Artikel ist wie alle anderen auf dieser Seite kostenlos für Dich und ich hoffe, ich konnte Dir weiterhelfen. Wer möchte, kann diesem Blog eine kleine Aufmerksamkeit in Form einer kleinen Spende (PayPal) oder über die Amazon Wunschliste zukommen lassen.

Schreibe einen Kommentar