PowerShell: 偵測並啟動本機的 Windows 服務

臨時碰到這個需求:偵測某 Windows 服務是否在執行中,若沒有,就啟動該服務。網路上隨便都可以找到一堆範例,就順便學了點 PowerShell。


指令如下:

function ForceStartService($ServiceName)
{
    $aService = Get-Service -Name $ServiceName
    if ($aService) 
    {
        "Found service"        
        if ($aService.Status -ne "Running")
        {
            "Not running, now force to start the service..."
            Start-Service $ServiceName
        }
    }
}

ForceStartService -ServiceName "你的 Windows 服務名稱"

將以上內容儲存成一個副檔名為 .ps1 的檔案,例如 C:\Scripts\StartMyService.ps1。然後執行下列命令:

PowerShell -ExecutionPolicy ByPass -File C:\Scripts\StartMyService.ps1"

試成功之後,把它放進 Windows 排程,每隔幾分鐘跑一次就行了。

啟動遠端電腦的 Windows 服務會稍微麻煩一點,可以搭配 WMI 或 PowerShell 本身提供的 Invoke-Command。要注意的是,如欲使用 Invoke-Command 來執行遠端電腦的 PowerShell 命令,該電腦必須啟用 Remote Commands

沒有留言:

技術提供:Blogger.
回頂端⬆️