【问题标题】:Check Windows Services status using PowerShell使用 PowerShell 检查 Windows 服务状态
【发布时间】:2016-11-07 13:32:14
【问题描述】:

通过在 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 语句,它应该检查服务是否正在运行,所以我在这里所说的是,如果服务没有运行,则启动服务,创建一个文本文件并向其中输出一条确认消息.

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

【问题讨论】:

    标签: powershell windows-services


    【解决方案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
    

    【讨论】:

    • 感谢您的回复,我将其更改为建议的名称并运行脚本,不幸的是,没有任何反应。它的作用是,当我按 F5 执行脚本时,它会在蓝色容器中打印它,然后是“PS C:\Users\ArifSohM\Desktop。我还检查了输出文件应该在的文件夹,什么都没有在那里。
    • @MuhammadSohailArif 我已经更新了完整代码,现在查看
    • 是的,我检查过了,它有效,但是,它没有在输出文件中打印任何内容。
    • @MuhammadSohailArif 使用 write-output 而不是 write-host ,那么我相信它会通过管道传递输出,检查并告诉我
    • 那也没用。但我会将您的回答标记为完整,因为它涉及我的主要问题。谢谢!
    猜你喜欢
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 2021-11-11
    • 2013-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多