使用Set-Service
,我能够StartType
在可接受的 值之间更改服务的Boot, System, Automatic, Manual, Disabled
。使用services.msc
,我能够将某些服务设置为以 优先级启动Automatic (Delayed Start)。但是,在尝试设置这些值时,Get-Service
仍然会将这些延迟启动的服务报告为StartType : Automatic
,并出现错误。Set-Service
我可以通过 powershell 设置此属性吗?还是我只能使用 UI或 GPO?
答案1
PowerShell 6.0 在 Set-Service cmdlet 中将 StartType 选项添加到 Automatic - Delayed
例如:Set-Service -Name“Testservice” –StartupType“AutomaticDelayedStart”
答案2
PowerShell 中没有直接方法,只需使用sc
sc.exe config NameOfTheService start= delayed-auto
在旧版本的 Windows 中,等号后需要一个空格,现在似乎不再需要了,但它仍然有效。
您还可以更改注册表项:
HKLM\SYSTEM\CurrentControlSet\Services\NameOfTheService\Start = 2
HKLM\SYSTEM\CurrentControlSet\Services\NameOfTheService\DelayedAutostart = 1
答案3
使用 powershell cmdlet 无法简单地完成此操作。我认为最简单的方法是使用 sc.exe。以下是其中一种方法:
$myArgs = 'config "{0}" start=delayed-auto' -f 'TheServiceName'
Start-Process -FilePath sc.exe -ArgumentList $myArgs
答案4
要点是,当您搜索“AutomaticDelayedStart(PowerShell 6 中引入)”时,请使用“StartupType”而不是“StartType”。
经过反复尝试,我发现这个方法对我有用:
Get-Service | Where-Object {$_.StartupType -eq "AutomaticDelayedStart"} | Sort-Object status