首页 > 解决方案 > PowerShell 检查服务是否被禁用

问题描述

以下是确保服务设置为正确启动类型的功能。我的问题是如何编写脚本来解释不存在的服务?例如,如果我同意“服务名称 2”被禁用或不存在,我不希望返回错误。需要对代码进行哪些更改?

function validate-services {

    $servicelist = @{    

    "Name of Service 1" = "Manual"
    "Name of Service 2" = "Disabled"

    }

    foreach ($service in $servicelist.Keys){ 

        $startType = (Get-Service -Name $service).StartType

        if ( $startType -eq $servicelist[$service] ){

            write-host $service "is correct." 
        } 
        else
        {
            write-host $service "is NOT set to the correct startup type."            
        }
    } 
}

标签: windowspowershell

解决方案


您可以将可能引发异常的部分封装在一个try块中,并将对该异常的反应添加到以下catch块中:

function Validate-Services {

    $servicelist = @{    
        "Name of Service 1" = "Manual"
        "Name of Service 2" = "Disabled"
    }

    foreach ($service in $servicelist.Keys) { 
        try {
            $startType = (Get-Service -Name $service -ErrorAction Stop).StartType
            if ($startType -eq $servicelist[$service]) {
                Write-Host "$service is correct." 
            } else {
                Write-Host "$service is NOT set to the correct startup type."            
            }
        } catch {
            Write-Host "$service does not exist."
        }
    } 
}

推荐阅读