使用PowerShell检查Windows服务状态

时间:2016-11-07 13:32:15

标签: powershell windows-services

通过在PowerShell中编写脚本,我想确定Windows服务是否正在运行。为此,我构建了以下脚本:

#Variables

$winupdate = 'Windows Update'
$running = 'Running'

#Function

function CheckServiceStatus {
param($winupdate)
$getservice = Get-Service -Name $winupdate
if($getservice.Status -ne $running){
    Start-Service $winupdate 
    Write-host "Starting" $winupdate "service"|out-file "C:\Users\ArifSohM\Desktop\Stuff for PowerShell\results.txt"
    }
}

要解释一下,我在这里尝试做的只是简单地创建一个名为“CheckServiceStatus”的函数。在该函数中,我创建了一个参数,并将Windows服务名称的变量放在此参数中。然后,我将“Get-Service”cmdlet放入另一个名为“$ getservice”的变量中。然后我开始一个IF语句,它应该检查服务是否正在运行,所以我在这里说的是,如果服务没有运行,启动服务,创建一个文本文件并输出一条确认消息。

点击上面的脚本后,似乎没有任何事情发生。难道我做错了什么?我错过了什么吗?任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

您正在使用服务显示名称而不是服务名称。

Windows更新的服务名称" wuauserv" 更改winupdate变量部分,你应该没问题

$winupdate = 'wuauserv'

函数定义应该在调用该函数之前 和函数调用语句

完整代码:

function CheckServiceStatus {
param($winupdate)
$getservice = Get-Service -Name $winupdate
if($getservice.Status -ne $running){
    Start-Service $winupdate 
    Write-output "Starting" $winupdate "service"|out-file "C:\Users\ArifSohM\Desktop\Stuff for PowerShell\results.txt"
    }
}

#Variables

$winupdate = 'wuauserv'
$running = 'Running'
CheckServiceStatus $winupdate