Windows Services
Manage Windows background services — list, start, stop, restart, and change startup type — using PowerShell's built-in service cmdlets.
When to Use
- User wants to list running or stopped Windows services
- User asks to start, stop, or restart a specific service
- User wants to change a service's startup type (automatic, manual, disabled)
- User needs to find which service owns a process or port
- User wants to check if a service is healthy or crashing
How to Use
List all running services
powershellGet-Service | Where-Object Status -eq 'Running' | Select-Object Name, DisplayName, Status | Sort-Object DisplayName
Find a specific service
powershellGet-Service -Name "*sql*" | Select-Object Name, DisplayName, Status, StartType
Start, stop, or restart a service
powershellStart-Service -Name "wuauserv" # Windows Update — start Stop-Service -Name "wuauserv" -Force # Windows Update — stop Restart-Service -Name "Spooler" # Print Spooler — restart
Check service startup type
powershellGet-Service -Name "wuauserv" | Select-Object Name, StartType, Status
Change startup type (Manual / Disabled / Automatic)
powershellSet-Service -Name "wuauserv" -StartupType Manual # won't start automatically Set-Service -Name "DiagTrack" -StartupType Disabled # blocked from starting Set-Service -Name "Spooler" -StartupType Automatic # restores auto-start
List services that failed to start
powershellGet-Service | Where-Object { $_.StartType -eq 'Automatic' -and $_.Status -ne 'Running' } | Select-Object Name, DisplayName, Status
Find service by process ID
powershell$pid = 1234 Get-WmiObject Win32_Service | Where-Object ProcessId -eq $pid | Select-Object Name, DisplayName, State, ProcessId
View service dependencies
powershell(Get-Service -Name "LanmanServer").DependentServices (Get-Service -Name "LanmanServer").ServicesDependedOn
Examples
"Is Windows Update service running?"
→ Get-Service -Name "wuauserv" | Select-Object Name, Status, StartType
"Stop and disable the Print Spooler service"
→ Stop-Service -Name "Spooler" -Force; Set-Service -Name "Spooler" -StartupType Disabled
"Which automatic services are currently stopped?"
→ Get-Service | Where-Object { $_.StartType -eq 'Automatic' -and $_.Status -ne 'Running' }
Cautions
- Stopping critical services (LanmanServer, DHCP, DNS) can disrupt network connectivity
- Starting/stopping services may require an elevated session depending on the service security descriptor
Set-Service -StartupType Disabledprevents the service from starting even manually until re-enabled- Use
Get-Service | Where-Object Status -eq 'Running' | Measure-Objectto get a quick service health count


