Files

34 lines
1.7 KiB
PowerShell
Raw Permalink Normal View History

2026-08-22 22:28:41 +08:00
# ============================================================
# 安装 MyBlog IP 白名单定时任务(家庭 Windows 电脑)
# 作用:注册 Windows 计划任务,每 30 分钟自动运行 report.ps1
# 前置:已复制 ipwatch.conf.example 为 ipwatch.conf 并填写
# 用法:powershell -ExecutionPolicy Bypass -File .\install.ps1
# 说明:计划任务在“当前登录用户”下运行;如需开机无登录也运行,
# 请右键任务 -> 属性勾选“不管用户是否登录都要运行”
# ============================================================
$ErrorActionPreference = "Stop"
$ScriptDir = $PSScriptRoot
$Report = Join-Path $ScriptDir "report.ps1"
$ConfFile = Join-Path $ScriptDir "ipwatch.conf"
if (-not (Test-Path -LiteralPath $ConfFile)) {
Write-Host "缺少 ipwatch.conf:请先复制 ipwatch.conf.example 并填写 SERVER / SECRET" -ForegroundColor Red
exit 1
}
$TaskName = "MyBlogIPWatch"
# /TR 里对带空格的脚本路径加引号,PowerShell 会整体作为一个参数传给 schtasks
$Action = "powershell.exe -NoProfile -ExecutionPolicy Bypass -File `"$Report`""
& schtasks /Create /F /TN $TaskName /SC MINUTE /MO 30 /TR $Action | Out-Null
if ($LASTEXITCODE -ne 0) {
Write-Host "创建计划任务失败,请确认以管理员身份运行或检查 schtasks 输出" -ForegroundColor Red
exit 1
}
# 创建后立即运行一次,马上验证配置是否正确
& schtasks /Run /TN $TaskName | Out-Null
Write-Host "计划任务 $TaskName 已创建:每 30 分钟自动检查公网 IP。"
Write-Host "日志文件:$(Join-Path $ScriptDir 'ipwatch.log')"
Write-Host "(首次运行结果可在日志中查看;卸载请运行 uninstall.ps1"