如何在if语句中更改Service StartType?

时间:2017-05-16 19:43:24

标签: powershell

我目前有一个脚本通过computers.txt并在每个服务器上搜索具有特定名称的服务(MYSERVICENAME)。

Get-Content c:\servicelist\computers.txt | % {
    if ($s = Get-Service -Computer $_ -Name MYSERVICENAME* -ErrorAction SilentlyContinue) {
        $s | select MachineName, ServiceName, StartType
    } else {
        "Service is not available on $_"
    }
}

如果我想获取列表以及具有该名称的服务器并将其开始类型更改为手动或自动(取决于我在脚本中指定的内容),我可以做些什么的建议。

我知道我可以用以下内容更改“开始类型”:

Set-Service –Name theservice –Computer thecomputer –StartupType “selectedType” 

但我不确定在上述脚本中实现此功能的最佳方法。

3 个答案:

答案 0 :(得分:2)

-ComputerName的{​​{1}}参数接受数组参数,Get-Service可以从管道中读取,因此您可以执行以下操作:

Set-Service

答案 1 :(得分:0)

我认为最好的方法是使用 PowerShell工作流程。如果你是初学者,我希望这不会太先进。即使它是,也不要害怕 - 工作流程既简单又强大。工作流将在多台计算机上并行执行相同的命令。简单易行。

workflow Set-ServiceStartType {
    Set-Service -Name MYSERVICENAME -StartupType Manual
}

Set-ServiceStartType -PSComputerName (Get-Content c:\servicelist\computers.txt)

如果您想“查看”有关该工作流程的更多信息,请运行以下命令:Get-Command Set-ServiceStartType | Select -ExpandProperty ScriptBlock

有关详细信息,请参阅有关powerShell工作流程的Hey, Scripting Guy! BlogMS Docs page

答案 2 :(得分:-2)

$startupType = 'Manual'  # change to Automatic or Manual for changing Startup Type


get-content c:\servicelist\computers.txt | % {
    if ($s=get-service -computer $_ -name SERVICENAMEHERE* -ErrorAction SilentlyContinue)
    {
        $s | select MachineName, ServiceName, StartType | Set-Service -computer $_ -StartupType $startupType
                                                          #Comment above if you don't want to change Startup Type
    }
    else {"Service is not available on $_"}
    }