トリガー開始とか遅延開始とかの情報がどこにあるのか調べてみたらレジストリにあるらしいです。
個人的にはアルファベットの方が後で加工しやすいので、コピペで使える日本語無しバージョンを用意しました。
function Get-CompleteService {
$triggers = Get-ChildItem "HKLM:\SYSTEM\CurrentControlSet\Services" |
Where-Object { $_.GetSubkeyNames().Contains("TriggerInfo") } |
ForEach-Object { $_.Name.Split("\")[-1] }
$startOption = @{ 01 = "(Trigger)"; 10 = "(DelayedStart)"; 11 = " (DelayedStart,Trigger)" }
return Get-CimInstance -ClassName Win32_Service | Select-Object @(
@{ n = "DisplayName"; e = { $_.DisplayName } }
@{ n = "Name"; e = { $_.Name } }
@{ n = "StartType"; e = { $_.StartMode + $startOption[10 * ($_.StartMode -eq "Auto" -and $_.DelayedAutoStart) + $triggers.Contains($_.Name)] } }
@{ n = "Status"; e = { $_.State } }
)
}