将服务 StartType 设置为 Automatic - Delayed

Pet*_*ier 16 powershell startup windows-service

使用Set-Service,我可以StartTypeBoot, System, Automatic, Manual, Disabled. 使用services.msc,我可以将某些服务设置为以 优先级启动Automatic (Delayed Start)。但是,Get-Service仍将这些延迟启动服务报告为StartType : Automatic,并Set-Service在尝试设置这些值时出错。

我可以通过powershell设置这个属性吗?还是我仅限于 UI或 GPO

Pet*_*orf 18

在 PowerShell 中没有直接的方法,只需使用 sc

sc.exe config NameOfTheService start= delayed-auto 
Run Code Online (Sandbox Code Playgroud)

在旧版本的 Windows 中,您需要在等号后加一个空格,这似乎不再需要,但它仍然有效。

您还可以更改注册表项:

HKLM\SYSTEM\CurrentControlSet\Services\NameOfTheService\Start = 2
HKLM\SYSTEM\CurrentControlSet\Services\NameOfTheService\DelayedAutostart = 1
Run Code Online (Sandbox Code Playgroud)

  • 直接调用“sc.exe”可以轻松地通过管道传输结果以供以后处理。同样 - 这个答案给了我直接使用 [`Get-ItemProperty`](https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/get- itemproperty) 来确定服务是否为 DelayedAutostart。 (2认同)

小智 7

PowerShell 6.0 已将选项 StartType 添加到 Automatic - Delayed in Set-Service cmdlet

例如:Set-Service -Name "Testservice" –StartupType "AutomaticDelayedStart"

https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/set-service?view=powershell-6


EBG*_*een 6

使用 powershell cmdlet 没有简单的方法可以做到这一点。在我看来,最简单的方法是使用 sc.exe。这是一种方法:

$myArgs = 'config "{0}" start=delayed-auto' -f 'TheServiceName'
Start-Process -FilePath sc.exe -ArgumentList $myArgs
Run Code Online (Sandbox Code Playgroud)