请教:winserver 条件重启应该如何设置?当ping不通局域网内网址时重启
winerver 宿主机 192.168.1.2
openwrt 虚拟机 192.168.1.1
无线AP 192.168.1.3
想在winerver 宿主机上设置,当宿主机ping不通无线AP时,宿主机自动重启,winserver能否创建这样的计划任务?有没有什么软件可以实现此任务? # 设置要监控的 IP 地址和重启间隔(以秒为单位)
$targetIP = "192.168.1.1"
$restartInterval = 300# 例如:300 秒 = 5 分钟
# 循环监视并重启计算机
while ($true) {
$pingResult = Test-Connection -ComputerName $targetIP -Count 1 -ErrorAction SilentlyContinue
if ($pingResult -eq $null) {
Write-Host "无法 ping 通 $targetIP,准备重启计算机..."
Restart-Computer -Force
} else {
Write-Host "可以 ping 通 $targetIP,等待 $restartInterval 秒..."
}
Start-Sleep -Seconds $restartInterval
}
-----------
要保存这个脚本,可以按照以下步骤操作:
打开记事本或其他文本编辑器。
将上述 PowerShell 脚本粘贴到文本编辑器中。
选择 "文件" > "保存"。
在 "文件名" 字段中输入一个文件名,例如 "AutoRestart.ps1"。
在 "保存类型" 下拉菜单中选择 "所有文件"。
选择一个你喜欢的保存位置,然后点击 "保存"。
保存后,你可以在 PowerShell 中运行这个脚本,或者使用 Windows 计划任务工具来定期运行脚本以实现自动重启。 本帖最后由 neavo 于 2023-8-12 09:53 编辑
@echo off
set ip=m.neavo.me
:FuncMain
D:
cd D:\Batch
ping %ip% | find "TTL" && goto FuncDone || goto FuncRepeatOne
exit
:FuncDone
set hour=%time:~,2%
if "%time:~,1%"==" " set hour=0%time:~1,1%
echo %date:~0,4%%date:~5,2%%date:~8,2%-%hour%%time:~3,2%%time:~6,2% : Done ... >> log\UPSCheck\%date:~0,4%%date:~5,2%%date:~8,2%.txt
exit
:FuncRepeatOne
set hour=%time:~,2%
if "%time:~,1%"==" " set hour=0%time:~1,1%
echo %date:~0,4%%date:~5,2%%date:~8,2%-%hour%%time:~3,2%%time:~6,2% : Failed ... >> log\UPSCheck\%date:~0,4%%date:~5,2%%date:~8,2%.txt
timeout /t 300 /nobreak
ping %ip% | find "TTL" && goto FuncDone || goto FuncRepeatTwo
exit
:FuncRepeatTwo
set hour=%time:~,2%
if "%time:~,1%"==" " set hour=0%time:~1,1%
echo %date:~0,4%%date:~5,2%%date:~8,2%-%hour%%time:~3,2%%time:~6,2% : Failed ... >> log\UPSCheck\%date:~0,4%%date:~5,2%%date:~8,2%.txt
timeout /t 300 /nobreak
ping %ip% | find "TTL" && goto FuncDone || goto FuncShutdown
exit
:FuncShutdown
set hour=%time:~,2%
if "%time:~,1%"==" " set hour=0%time:~1,1%
echo %date:~0,4%%date:~5,2%%date:~8,2%-%hour%%time:~3,2%%time:~6,2% : Shutdown ... >> log\UPSCheck\%date:~0,4%%date:~5,2%%date:~8,2%.txt & shutdown /s /t 10
exit
pause
来个命令行版的
逻辑是ping目标域名/IP,不通的话五分钟重试,重试两次都不通则五分钟后关机,相关操作记录会写入LOG文件,记录相关时间轴
路径和目标域名/IP自己改下应该就能用 hayse 发表于 2023-8-12 07:52
# 设置要监控的 IP 地址和重启间隔(以秒为单位)
$targetIP = "192.168.1.1"
$restartInterval = 300#...
多谢🙏 neavo 发表于 2023-8-12 09:49
来个命令行版的
逻辑是ping目标域名/IP,不通的话五分钟重试,重试两次都不通则五分钟后关机,相关操作 ...
一并感谢 感觉这套逻辑有问题。如果AP关了,自己岂不是会不断重启? [偷笑]很多定时关机重启软件有ping网络通断这一选项. hayse 发表于 2023-8-12 07:52
# 设置要监控的 IP 地址和重启间隔(以秒为单位)
$targetIP = "192.168.1.1"
$restartInterval = 300#...
实际操作中遇到问题,再来请教一下:
在winserver 2022系统下,把这个脚本作为任务计划程序执行了,常规中选了以最高权限运行,但是在实际执行过程中,还是提示“Restart-Computer : 无法重新启动计算机 ,并显示以下错误消息: 没有相应特权”
我用“ Restart-Computer -Force”单独在Windows PowerShell执行也是提示这个错误,如果在以管理员身份运行的Windows PowerShell中执行“ Restart-Computer -Force”,则一切正常,请问脚本里要添加什么命令才能使“ Restart-Computer -Force”以管理员身份运行?
多谢
# 判断是否以管理员权限运行
if (-not (::GetCurrent()).IsInRole(::Administrator)) {
# 如果不是管理员,使用Start-Process命令以管理员权限重新运行脚本
Start-Process powershell -ArgumentList "-NoProfile -ExecutionPolicy Bypass -File `"$PSCommandPath`"" -Verb RunAs
exit
}
-------
脚本开头加上,可能要关UAC
页:
[1]