What Get-Service does
Get-Service queries the local Service Control Manager (SCM) database and returns ServiceController objects describing Windows services: short name, display name, status (Running/Stopped/etc.), start type where exposed on the object, and dependency relationships. It is the PowerShell-first replacement for browsing the Services MMC snap-in from a shell.
Common usage
| Pattern | Purpose | Notes |
|---|---|---|
Get-Service wuauserv | Fetch one service | Name is the service key, not always obvious—use wildcard search |
Get-Service *sql* | Wildcard discovery | Case-insensitive by default on Windows PowerShell |
Get-Service | ? Status -eq Running | Inventory running set | Pipe to Export-Csv for CMDB sync |
(Get-Service bits).DependentServices | Show dependents | Helps order safe shutdowns |
Controlling services
Start-Service, Stop-Service, and Restart-Service accept -Name and -InputObject. They usually require Administrator elevation. Use -Force only when you understand dependent services that will cascade.
When to use CIM instead
Get-Service hides some fields operators expect—binary path, service start mode details, and desktop interact flags—those live on Win32_Service via Get-CimInstance Win32_Service -Filter "Name='bits'". Choose CIM/WMI when building hardening reports; choose Get-Service for fast interactive triage.
Remoting
Get-Service supports -ComputerName in Windows PowerShell 5.1 for remote SCM queries when WinRM and firewall rules allow. Prefer Invoke-Command for PowerShell 7 consistent remoting patterns.
Related: Get-Process explained, PowerShell networking commands, CMD vs PowerShell, PowerShell beginner commands.