Ich hatte heute dieselbe Frage und war mit den Antworten, die ich hier oder bei Google gesehen habe, nicht zufrieden. Deshalb habe ich ein PowerShell-Skript geschrieben, um mir eine Slack-Benachrichtigung zu senden, wenn sich meine IP-Adresse ändert .
Wenn Sie eine E-Mail erhalten möchten, können Sie auf die Links im Skript klicken, um eine andere Version anzuzeigen, die Outlook-E-Mails unterstützt.
Ich hoffe das hilft jemandem und verdient eine Stimme. :-)
Speichern Sie den folgenden Text in einer .ps1-Datei. Bearbeiten Sie es entsprechend mit Ihrer eigenen Slack-Webhook-URL. Speichern. Klicken Sie mit der rechten Maustaste auf die Datei, um "Mit PowerShell ausführen".
Oder Sie können festlegen, dass es täglich oder wie oft ausgeführt wird.
#Script to compare current IP with old IP and sends Slack notification if different (and do nothing if there was no change).
#We can put this as a scheduled task to run daily.
#ScriptName: IP_change_detection_notification.ps1
$slackWebhookUrl = "XXXXXXXXXX" #put yours here
$ipDetectionUrl = "https://wtfismyip.com/text"
$IPAddFile = "C:\code\IP_change_detection_notification.dat" #absolute path to file that stores the old IP record
$slackOutputFile = "C:\code\IP_change_detection_notification_Slack.txt"
$optionalDebuggingFile = "C:\code\IP_change_detection_notification_debugging.txt"
$Request = Invoke-WebRequest $ipDetectionUrl
$IP_new = ($Request.Content.Trim())
Write-Host "Current IP address: [$IP_new]"
#Check if old IP record exists
If(Test-Path "$IPAddFile")
{
#Get old IP
$IP_old = Get-Content "$IPAddFile"
#Compare IPs
if(-not($IP_new -eq $IP_old))
{
Write-Host "Old IP address: [$IP_old]"
$msg = "Your WAN IP has changed to $IP_new (was $IP_old)!"
Write-Host "$msg"
$body = $("{""text"":""$msg""}")
Write-Host "$body"
Invoke-RestMethod -Uri $slackWebhookUrl -Method Post -ContentType 'application/json' -Body $body -OutFile $slackOutputFile
"Notification Sent"
#Overwrite and update new IP
$IP_new | Out-File $IPAddFile
}
else
{"No change, no notification"}
}
else
{
#Create new, as file not found
$IP_new | Out-File $IPAddFile
"File created"
}
$(get-date -f yyyy-MM-dd_HH_mm_ss) | Out-File $optionalDebuggingFile
#Read-Host -Prompt "Press Enter to exit" #Comment out this line if this script will be run by a cron job. Otherwise, uncomment it so that you can see the results of the script in the console.
#This script was adapted from https://gallery.technet.microsoft.com/scriptcenter/Detect-IP-address-change-aeb51118 by Satyajit
So funktioniert der Taskplaner:
Ich musste PowerShell als Administrator ausführen und dann ausführen Get-ExecutionPolicy
, was mir dann mitteilte, dass meine aktuelle ExecutionPolicy "eingeschränkt" war.
Dann bin ich gelaufen Set-ExecutionPolicy RemoteSigned
(wie hier gezeigt, aber es macht mich nervös: https://stackoverflow.com/a/26955050/470749 ).
Dann habe ich an einer einfachen Windows-Eingabeaufforderung ein paar Mal versucht, den folgenden Befehl auszuführen: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy ByPass -File "C:\code\IP_change_detection_notification.ps1"
(einmal, um die IP zu speichern, und ein zweites Mal, um zu überprüfen, ob sie sich geändert hat).
(Bis das funktioniert, versuchen Sie nicht, den Taskplaner zu verwenden.)
Dann habe ich eine Aufgabe mit C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
als Programm und -ExecutionPolicy ByPass -File C:\code\IP_change_detection_notification.ps1
als Argumente geplant.