我一直在尝试构建一个Powershell脚本来重新启动远程Windows服务。到目前为止,此方法运行良好,但我想构建一个检查系统。
到目前为止,该服务可以停止并再次正常启动,但是鉴于它正在生产计算机上运行,我们希望进行一次额外检查:
function setStatusOfService {
for ($service)
{
$serviceinfo3 = Get-Service $service -ComputerName $Computer1
if ($serviceinfo3.Status -eq 'Running')
{
Get-Service -Name $Service1 -ComputerName $Computer1 | Stop-Service
GetStatusOfService $service -ComputerName $Computer1
Start-Sleep -Seconds 10
}
else
{
Get-Service -Name $Service1 -ComputerName $Computer1 | Start-Service
GetStatusOfService $service -ComputerName $Computer1
break
}
}
exit
}
这很好。但是,我试图以一种方式构建该功能,使它在失败但无济于事时继续尝试启动服务。
我想坚持的另一步是,Powershell完成脚本后会发送一封电子邮件。停止并再次启动服务后,它将检查状态并将特定状态发送出去:
Function getStatusOfService {
$serviceinfo = Get-Service $service -ComputerName $Computer1
Write-Host $service is $serviceinfo.Status
SendEmail
}
但是到目前为止,我还不能工作,是它只能在状态停止时发送一封电子邮件。我已经尝试过多个选项,例如Status -eq "stopped"
,但无论如何它都会发送电子邮件。
有人可以给我一些有关如何构建它的建议吗?
亲切的问候,
里克。
答案 0 :(得分:0)
我不确定您要达到的目的,但是检查服务并在停止时发送邮件应该像这样工作:
$service = Get-Service "servicename" -ComputerName "Computer"
if($service.status -eq "Stopped"){
Send-Mailmessage -to "it@it.com" -from "computer@it.com" -Subject "Stopped Service" -Body "Service $service.name stopped."
}
如果您想不断检查这一点,则可以使用计划任务多次运行脚本。