код powershell, который сначала проверяет службу на сервере и отображает имя службы и имя сервера - PullRequest
0 голосов
/ 24 октября 2018

Как я могу написать код PowerShell, который сначала проверяет службу на сервере и отображает имя службы, имя и тип загрузки сервера!затем, если он включен автоматически, он переключается вручную и снова показывает состояние

$servicename = 'spooler'
$server = 'server2'      
$G$GetStatus= Get-Service -DisplayName $servicename -ComputerName $server | Select-Object -ExpandProperty StartType
Write-host "$GetStatus" -ForegroundColor red 
Write-host "$servicename på $server" -ForegroundColor Green

if ($GetStatus.StartType -eq 'Automatic') {
$GetStatus | Set-Service -StartupType Manual
}
}
}
Write-output "$GetStatus" -ForegroundColor red 
Write-output "$servicename på $server" -ForegroundColor Green

Ответы [ 3 ]

0 голосов
/ 24 октября 2018

Это должно делать то, что вы хотите:

$serviceName = "spooler"
$server = "server2"

Get-Service -Name $serviceName -ComputerName $server |
        ForEach-Object {}{
            $_ | Format-Table Name, Status, StartType -AutoSize

            if ($_.StartType -eq "Automatic")
            {
                Set-Service -InputObject $_ -StartupType Manual
            }
        }{Get-Service -Name $serviceName -ComputerName $server | Format-Table Name, Status, StartType -AutoSize}
0 голосов
/ 24 октября 2018

Я бы, вероятно, сделал что-то вроде этого:

$server = 'server2'
$servicename = 'spooler'
$services = Get-Service -ComputerName $server -Name $servicename 
# show what was found 
Write-Host "`r`nService(s) named '$servicename' on '$server'" -ForegroundColor Yellow
$services | Format-Table DisplayName, Name, ServiceName, Status, StartType, MachineName -AutoSize

# next change the StartupType for any service found that is set to 'Automatic'
$services | Where-Object { $_.StartType -eq 'Automatic' } | ForEach-Object { 
    Write-Host "Setting StartupType for service '$($_.Name)' on computer '$($_.MachineName)' to 'Manual'" -ForegroundColor Green
    $_ | Set-Service -StartupType Manual }

# show what has changed
Get-Service -ComputerName $server -Name $servicename | 
Format-Table DisplayName, Name, ServiceName, Status, StartType, MachineName -AutoSize

Если вы не знаете точного названия службы, вам лучше использовать Get-Service с частичным именем.Вы можете сделать это с помощью оператора like.В этом случае добавьте звездочки вокруг имени сервика и измените строки $services = Get-Service -ComputerName $server -Name $servicename, чтобы они стали:

$servicename = '*spooler*'
$services = Get-Service -ComputerName $server | Where-Object { $_.Name -like $servicename }
0 голосов
/ 24 октября 2018

вот пример того, что я имею в виду, НЕ выбрасывая объект в пользу одного значения из одного свойства объекта.

$servicename = 'spooler'
$server = 'LocalHost'

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

Write-host $ServiceInfo.StartType -ForegroundColor red 
Write-host "$servicename på $server" -ForegroundColor Green
''

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

''
Write-output $ServiceInfo.StartType
Write-output "$servicename på $server"

output ...

Automatic
spooler på LocalHost

What if: Performing the operation "Set-Service" on target "Print Spooler (spooler)".

Automatic
spooler på LocalHost

Я не тестировал его в моей системе, но -WhatIf, похоже, указывает на его работу.У меня есть только одна система, которую я могу использовать ... и я не хочу с ней возиться.[ ухмылка ]

примечания ...

  • сохранял весь объект вместо значения только свойства StartType
  • желаемое свойство по имени $ServiceInfo.StartType
  • использовало весь объект, чтобы сказать Set-Service, что работать с
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...