我编写了一个脚本,每 15 分钟检查一次 Web 服务器上的 IIS 服务状态。我通过 Windows 任务计划程序安排了这个脚本。
当我登录到服务器并手动运行脚本时,如果功能正确。当我没有登录到服务器并通过批处理脚本执行此操作时,即使它确实已启动并重新启动服务,Get-Service
查询也不会返回IIS。Running
为什么当我以物理方式登录服务器与作为计划任务在后台运行时,此脚本的运行方式会有所不同?
脚本是这样调用的:C:\Scripts\powershell.exe -File verify_status.ps1 [Service param]
##############################
# Get service status
##############################
if($args[0] -ne $NULL){
$serviceName = $args[0]
$serverName = hostname
$status = (Get-Service $serviceName).Status
if ($status -ne "Running"){
sendMail "$serviceName" "$serverName"
Restart-Service $ServiceName
}else{
# Service is running, do nothing;
}
}
======================================
编辑NULL
-当脚本在没有人登录的情况下运行时,Get-Service 返回一个。如果这有帮助的话。