ฉันมีคำถามเดียวกันนี้ในวันนี้และผมก็ไม่พอใจกับคำตอบที่ผมเห็นที่นี่หรือที่ Google ดังนั้นผมเขียนสคริปต์ PowerShell เพื่อส่งการแจ้งเตือนหย่อนเมื่อใดก็ตามที่การเปลี่ยนแปลงที่อยู่
หากคุณต้องการรับอีเมลคุณสามารถคลิกลิงก์ในสคริปต์เพื่อดูเวอร์ชันอื่นที่รองรับอีเมล Outlook
ฉันหวังว่านี่จะช่วยให้ใครบางคนและได้รับคะแนน :-)
บันทึกข้อความต่อไปนี้เป็นไฟล์. ps1 แก้ไขตามความเหมาะสมด้วย Slack webhook URL ของคุณ บันทึก คลิกขวาที่ไฟล์เพื่อ "เรียกใช้ด้วย PowerShell"
หรือคุณสามารถกำหนดให้มันรันทุกวันหรือบ่อยครั้งก็ได้
#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
ในการทำให้ Task Scheduler ทำงาน:
ฉันต้องเรียกใช้ PowerShell ในฐานะผู้ดูแลระบบแล้วจึงเรียกใช้Get-ExecutionPolicy
ซึ่งบอกฉันว่า ExecutionPolicy ปัจจุบันของฉันคือ "ถูก จำกัด "
จากนั้นฉันก็วิ่งSet-ExecutionPolicy RemoteSigned
(ดังที่นี่ แต่มันทำให้ฉันกังวล: https://stackoverflow.com/a/26955050/470749 )
จากพรอมต์คำสั่งพื้นฐานของ Windows ฉันลองใช้คำสั่งต่อไปนี้สองครั้ง: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy ByPass -File "C:\code\IP_change_detection_notification.ps1"
(หนึ่งครั้งเพื่อเก็บ IP และครั้งที่สองเพื่อตรวจสอบว่ามีการเปลี่ยนแปลงหรือไม่)
(จนกว่าคุณจะใช้งานได้อย่าพยายามใช้ Task Scheduler)
จากนั้นฉันจัดตารางงานด้วยC:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
โปรแกรมและ-ExecutionPolicy ByPass -File C:\code\IP_change_detection_notification.ps1
อาร์กิวเมนต์