如何为各种服务器将服务启动模式设置为手动还是自动?

时间:2018-10-22 11:23:32

标签: powershell service

首先,我要停止服务,然后手动将其打开

$getservicestatus = (Get-Service -DisplayName $servicename -ComputerName $server).status

if ($getservicestatus -eq "Running") {
    Set-Service -Name $servicename -ComputerName $server -Status Stopped            
else
{
    Write-Host "$server $servicename var redan Running!" -ForegroundColor Yellow
    Stop-Service spooler
    Set-Service spooler Manual

2 个答案:

答案 0 :(得分:1)

您的问题是Set-Service没有一个ComputerName参数,因此它不能对远程服务起作用。

Get-Service可以对远程计算机执行操作(它确实具有ComputerName参数),此命令返回可以通过管道传递到Set-Service进行远程操作的服务对象。

假设您要停止远程服务并将其设置为“手动启动”,则代码如下:

$servicename = 'spooler'
$server = 'server2'

$service = Get-Service -Name $servicename -ComputerName $server

if ($service.Status -eq 'Running') {
    $service | Set-Service -Status Stopped
}

if ($service.StartType -eq 'Automatic') {
    $service | Set-Service -StartupType Manual
}

# If you need to start the service again
# $service | Set-Service -Status Running

答案 1 :(得分:0)

尝试一下:更改

Set-Service -Name $servicename -ComputerName $server -Status Stopped

Invoke-Command -ComputerName $server -ScriptBlock {Stop-Service -Name $servicename -Force}