任务在任务计划程序中不起作用

时间:2018-01-23 20:41:03

标签: powershell batch-file taskscheduler

我有一个PowerShell脚本,在它关闭时会重新启动我们的SMTP服务。它看起来像这样:

$Computer = "localhost"
$SMTPServiceName = "SMTPSVC"
$AllServices = get-service -ComputerName $Computer
$SMTPService

foreach ($Service in $AllServices)
{
if ($Service.name -eq $SMTPServiceName)
{
    $SMTPService = $Service
    break
}
}

if ($SMTPService.status -eq "StopPending")
{
write-host "Service" $SMTPService "is pending stop. Attempting to stop and restart."
$servicePID = (gwmi win32_Service | where {$_.Name -eq $SMTPServiceName}).ProcessID
Stop-Process $ServicePID
Start-Service -InputObject (get-Service -ComputerName $Computer -Name $SMTPServiceName)
write-host "Service" $SMTPService "restarted."
}
elseif ($SMTPService.status -eq "Paused")
{
write-host "Service" $SMTPService "is paused. Attempting to resume."
Resume-Service -InputObject (get-Service -ComputerName $Computer -Name $SMTPServiceName)
write-host "Service" $SMTPService "resumed."
}
elseif ($SMTPService.status -eq "Stopped")
{
write-host "Service" $SMTPService "is stopped. Attempting to restart."
Start-Service -InputObject (get-Service -ComputerName $Computer -Name $SMTPServiceName)
write-host "Service" $SMTPService "restarted."
}
else
{
write-host "Service" $SMTPService "is running."
}

我已经确认这是有效的。我关闭SMTP服务,运行脚本,然后SMTP服务重新启动并运行。

我为任务计划程序创建了一个.bat文件来运行。它看起来像这样:

cd "C:\Scripts\" & powershell.exe C:\Scripts\restart-smtp.ps1

我已经确认这是有效的。我关闭SMTP服务,运行批处理文件,SMTP服务已备份并运行。

现在我想让Task Scheduler每5分钟运行一次。我设置任务,将其指向批处理文件,但它不起作用。我想知道是否有人可以帮我解决这个问题。

我得到的唯一错误是:

  

操作员或管理员拒绝了该请求。 (0x800710E0)

我告诉它以我登录的同一管理员身份运行,与从PowerShell提示符运行脚本和批处理文件的管理员相同。

以下是我的任务设置:

enter image description here

您可能注意到的一件事是历史记录被禁用。我想知道如果启用了历史记录中是否会显示错误日志,但我不确定如何启用它。

这是在Windows Server 2016上运行。

1 个答案:

答案 0 :(得分:0)

感谢大家的回答,但我提出了一个更简单的解决方案:

enter image description here

相关问题