2016-11-07 591 views
0

通过在PowerShell中编写脚本,我想确定Windows服务是否正在运行或未运行。对于这一点,我已经构建了以下脚本:使用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

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

的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 
+0

感谢您的回复,我将其更改为建议的名称并运行了脚本,不幸的是,noth发生了。它的功能是,当我点击F5执行脚本时,它将它打印在蓝色容器中,然后是“PS C:\ Users \ ArifSohM \ Desktop”。我还检查了输出文件所在的文件夹,没有任何东西 –

+0

@MuhammadSohailArif我已经更新完整的代码,现在检查 –

+0

是的,我检查了它,它的工作,但它没有打印输出文件中的任何东西 –