Вот хороший пост с несколькими подходами к обработке свойства DelayedAutoStart
объекта Служба Windows.
Для вашей версии PowerShell лучше всего использовать sc.exe.
Запрос типа запуска службы
Вы можете запросить тип запуска служб, используя sc.exe
, но информация возвращается в виде текста, а не объектов PowerShell, поэтому вам придется выполнить некоторые манипуляции с текстом. Я набросал быстрый однострочный код, который может получить тип запуска для службы с заданным именем.
sc.exe qc "SERVICE_NAME" | Select-String "START_TYPE" | ForEach-Object { ($_ -replace '\s+', ' ').trim().Split(" ") | Select-Object -Last 1 }
Вот пример, где я использую его в сочетании с циклом, чтобы получить состояние каждой службы на машине.
foreach($Service in (Get-Service)) {
Write-Host "$($Service.ServiceName)"
sc.exe qc "$($Service.ServiceName)" | Select-String "START_TYPE" | ForEach-Object { ($_ -replace '\s+', ' ').trim().Split(" ") | Select-Object -Last 1 }
}
Настройка типа запуска службы
Вы можете установить тип запуска службы, выполнив что-то похожее на следующее...
sc.exe config NameOfTheService start= delayed-auto
или обернуть sc.exe
в PowerShell...
$myArgs = 'config "{0}" start=delayed-auto' -f 'TheServiceName'
Start-Process -FilePath sc.exe -ArgumentList $myArgs
Начиная с PowerShell 6.0, они добавили поддержку AutomaticDelayedStart
, однако, поскольку вы используете PowerShell 5.1, это неприменимо (но может быть для других читателей).
Set-Service -Name "Testservice" –StartupType "AutomaticDelayedStart"
person
Zam
schedule
09.12.2019