Powershell для перезапуска службы, работающей дольше, чем - PullRequest
0 голосов
/ 01 июня 2018

Я пытаюсь написать сценарий powershell, который будет:

  • Перезапустить службу, если она работает более 1 часа
  • Оставить в покое, если менее 1 часа
  • Запустите его, если он находится в состоянии stopped.

В настоящее время у меня есть следующее, но когда дело доходит до добавления дополнительных переменных и операторов if, я ужасен.Этот скрипт работает очень хорошо, но я не могу его перезапустить, кажется, что работает только start / stop.

Get-Service "Print Spooler" | 
    Where StartTime -lt (Get-Date).AddMinutes(-60) |
    Stop-Service

Ответы [ 2 ]

0 голосов
/ 01 июня 2018

StartTime не является свойством класса ServiceController, который Get-Service возвращает в моей системе.Как ни нелепо и идентификатор процесса сервиса.Это ужасно плохой дизайн, но так оно и есть.Итак, я бы использовал CIM / WMI, чтобы получить идентификатор процесса, чтобы определить, когда была запущена служба.

$Service = Get-Service "Print Spooler"
$ServiceStartTime = (Get-CimInstance -ClassName Win32_Service -Filter "Name = '$($Service.Name)'" -Property ProcessId | ForEach-Object { Get-Process -Id $_.ProcessId }).StartTime

# If services has been running for an hour, stop it
if (($Service.Status -eq 'Running') -and ($ServiceStartTime -lt (Get-Date).AddHours(-1))) {
    Stop-Service $Service
}

# If service isn't running, start it
if ($Service.Status -eq 'Stopped') {
    Start-Service $Service 
}
0 голосов
/ 01 июня 2018

Я бы предложил переменную для этого:

# for debugging
$PSDefaultParameterValues['*Service:Verbose'] = $true

$svc = Get-Service -Name Spooler

if ($svc.Status -eq 'stopped') {
    $svc | Start-Service
} elseif ($svc.StartTime -lt (Get-Date).AddHours(-1)) {
    $svc | Stop-Service -PassThru | Start-Service
} else {
    'Print Spooler is running and StartTime is within the past hour!'
}

# other logic goes here
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...