Powershell-使用内置检查重新启动远程Windows服务器

时间:2018-09-10 08:43:07

标签: powershell

我一直在尝试构建一个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",但无论如何它都会发送电子邮件。

有人可以给我一些有关如何构建它的建议吗?

亲切的问候,

里克。

1 个答案:

答案 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."
}

如果您想不断检查这一点,则可以使用计划任务多次运行脚本。