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
}