Get startup type of Windows service using PowerShell

PowershellWindows Services

Powershell Problem Overview


How can I get the Windows service startup type using PowerShell and not using WMI?

I looked inside the Get-Service command, and it does not provide something to display the "startup type".

Powershell Solutions


Solution 1 - Powershell

WMI is the way to do this.

Get-WmiObject -Query "Select StartMode From Win32_Service Where Name='winmgmt'"

Or

Get-WmiObject -Class Win32_Service -Property StartMode -Filter "Name='Winmgmt'"

Solution 2 - Powershell

With PowerShell version 4:

You can run a command as given below:

   Get-Service | select -property name,starttype

Solution 3 - Powershell

In PowerShell you can use the command Set-Service:

Set-Service -Name Winmgmt -StartupType Manual

I haven't found a PowerShell command to view the startup type though. One would assume that the command Get-Service would provide that, but it doesn't seem to.

Solution 4 - Powershell

You can use also:

(Get-Service 'winmgmt').StartType

It returns just the startup type, for example, disabled.

Solution 5 - Powershell

As far as I know there is no “native” PowerShell way of getting this information. And perhaps it is rather the .NET limitation than PowerShell.

Here is the suggestion to add this functionality to the version next:

https://connect.microsoft.com/PowerShell/feedback/details/424948/i-would-like-to-see-the-property-starttype-added-to-get-services

The WMI workaround is also there, just in case. I use this WMI solution for my tasks and it works.

Solution 6 - Powershell

Once you've upgraded to PowerShell version 5 you can get the startup type.

To check the version of PowerShell you're running, use $PSVersionTable.

The examples below are for the Windows Firewall Service:

For the local system

Get-Service | Select-Object -Property Name,Status,StartType | where-object {$_.Name -eq "MpsSvc"} | Format-Table -auto

For one remote system

Get-Service -ComputerName HOSTNAME_OF_SYSTEM | Select-Object -Property MachineName,Name,Status,StartType | where-object {$_.Name -eq "MpsSvc"} | Format-Table -auto

For multiple systems (must create the systems.txt)

Get-Service -ComputerName (Get-content c:\systems.txt) | Select-Object -Property MachineName,Name,Status,StartType | where-object {$_.Name -eq "MpsSvc"} | Format-Table -auto

Solution 7 - Powershell

Use:

Get-Service BITS | Select StartType

Or use:

(Get-Service -Name BITS).StartType

Then

Set-Service BITS -StartupType xxx

[PowerShell 5.1]

Solution 8 - Powershell

If you update to PowerShell 5 you can query all of the services on the machine and display Name and StartType and sort it by StartType for easy viewing:

Get-Service |Select-Object -Property Name,StartType |Sort-Object -Property StartType

Solution 9 - Powershell

You can also use the sc tool to set it.

You can also call it from PowerShell and add additional checks if needed. The advantage of this tool vs. PowerShell is that the sc tool can also set the start type to auto delayed.

# Get Service status
$Service = "Wecsvc"
sc.exe qc $Service

# Set Service status
$Service = "Wecsvc"
sc.exe config $Service start= delayed-auto

Solution 10 - Powershell

It is possible with PowerShell 4.

Get-Service *spool* | select name,starttype | ft -AutoSize

screenshot

Solution 11 - Powershell

By default StartType is not shown by Get-Service, but you can always explicitly ask for it:

Get-Service | select StartType,DisplayName | sort StartType,DisplayName

Use Get-Service | Get-Member to see all available fields.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionkubuszView Question on Stackoverflow
Solution 1 - PowershellravikanthView Answer on Stackoverflow
Solution 2 - PowershellAlan AnguloView Answer on Stackoverflow
Solution 3 - PowershellLinWinGuyView Answer on Stackoverflow
Solution 4 - PowershellMarcel JanusView Answer on Stackoverflow
Solution 5 - PowershellRoman KuzminView Answer on Stackoverflow
Solution 6 - PowershellBrandy ReidView Answer on Stackoverflow
Solution 7 - PowershellDanaView Answer on Stackoverflow
Solution 8 - PowershellDannyBoyView Answer on Stackoverflow
Solution 9 - PowershellemekmView Answer on Stackoverflow
Solution 10 - Powershelluser12700803View Answer on Stackoverflow
Solution 11 - Powershelluser1602View Answer on Stackoverflow