Chapter 25. System Services

Introduction

As the support mechanism for many administrative tasks on Windows, managing and working with system services naturally fits into the administrator’s toolbox.

PowerShell offers a handful of cmdlets to help make working with system services easier: from listing services to lifecycle management and even to service installation.

List All Running Services

Problem

You want to see which services are running on the system.

Solution

To list all running services, use the Get-Service cmdlet:

PS > Get-Service

Status   Name                DisplayName
------   ----                -----------
Running  ADAM_Test           Test
Stopped  Alerter             Alerter
Running  ALG                 Application Layer Gateway Service
Stopped  AppMgmt             Application Management
Stopped  aspnet_state        ASP.NET State Service
Running  AudioSrv            Windows Audio
Running  BITS                Background Intelligent Transfer Ser...
Running  Browser             Computer Browser
(...)

Discussion

The Get-Service cmdlet retrieves information about all services running on the system. Because these are rich .NET objects (of the type System.ServiceProcess.ServiceController), you can apply advanced filters and operations to make managing services straightforward.

For example, to find all running services:

PS > Get-Service | Where-Object { $_.Status -eq "Running" }

Status   Name               DisplayName
------   ----               -----------
Running  ADAM_Test          Test
Running  ALG                Application Layer Gateway Service
Running  AudioSrv           Windows Audio
Running  BITS               Background Intelligent Transfer Ser...
Running  Browser            Computer Browser
Running  COMSysApp          COM+ System Application
Running  CryptSvc           Cryptographic Services

Or, to sort services by the number of services that depend on them:

PS > Get-Service | Sort-Object -Descending { $_.DependentServices.Count }

Status   Name               DisplayName
------   ----               -----------
Running  RpcSs              Remote Procedure Call (RPC)
Running  PlugPlay           Plug and Play
Running  lanmanworkstation  Workstation
Running  SSDPSRV            SSDP Discovery Service
Running  TapiSrv            Telephony
(...)

Since PowerShell returns full-fidelity .NET objects that represent system services, these tasks and more become incredibly simple due to the rich amount of information that PowerShell returns for each service. For more information about the Get-Service cmdlet, type Get-Help Get-Service. For more information about filtering, grouping, and sorting in PowerShell commands, see Filter Items in a List or Command Output.

Note

The Get-Service cmdlet displays most (but not all) information about running services. For additional information (such as the service’s startup mode), use the Get-WmiObject cmdlet:

$service = Get-WmiObject Win32_Service |
    Where-Object { $_.Name -eq "AudioSrv" }
$service.StartMode

In addition to supporting services on the local machine, the Get-Service cmdlet lets you retrieve and manage services on a remote machine as well:

PS > Get-Service -Computer <Computer> | 
    Sort-Object -Descending { $_.DependentServices.Count }

Status   Name               DisplayName
------   ----               -----------
Running  RpcEptMapper       RPC Endpoint Mapper
Running  DcomLaunch         DCOM Server Process Launcher
Running  RpcSs              Remote Procedure Call (RPC)
Running  PlugPlay           Plug and Play
Running  nsi                Network Store Interface Service
Running  SamSs              Security Accounts Manager
(...)

For more information about working with classes from the .NET Framework, see Work with .NET Objects. For more information about working with the Get-WmiObject cmdlet, see Chapter 28.

Manage a Running Service

Problem

You want to manage a running service.

Solution

To stop a service, use the Stop-Service cmdlet:

PS > Stop-Service AudioSrv -WhatIf
What if: Performing operation "Stop-Service" on Target "Windows Audio 
(AudioSrv)".

Likewise, use the Suspend-Service, Restart-Service, and Resume-Service cmdlets to suspend, restart, and resume services, respectively.

Discussion

The Stop-Service cmdlet lets you stop a service either by name or display name.

Note

Notice that the solution uses the -WhatIf flag on the Stop-Service cmdlet. This parameter lets you see what would happen if you were to run the command but doesn’t actually perform the action.

For more information about the Stop-Service cmdlet, type Get-Help Stop-Service. If you want to suspend, restart, or resume a service, see the help for the Suspend-Service, Restart-Service, and Resume-Service cmdlets.

To configure a service (for example, its description or startup type), see Configure a Service. In addition to letting you configure a service, the Set-Service cmdlet described in that recipe also lets you stop a service on a remote computer.

Configure a Service

Problem

You want to configure properties or startup behavior of a service.

Solution

To configure a service, use the Set-Service cmdlet:

PS > Set-Service WinRM -DisplayName 'Windows Remote Management (WS-Management)' `
    -StartupType Manual

Discussion

The Set-Service cmdlet lets you manage the configuration of a service: its name, display name, description, and startup type.

If you change the startup type of a service, your natural next step is to verify that the changes were applied correctly. List All Running Services shows how to view the properties of a service, including the WMI-based workaround to examine the startup type.

In addition to letting you configure services on the local computer, the Set-Service cmdlet also offers the -ComputerName parameter to configure services on remote computers.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.138.34.226