Gestion des services

Cet exemple s’applique uniquement à Windows PowerShell 5.1.

Il existe huit principales applets de commande Service, conçues pour un vaste éventail de tâches de service. Cet article s’intéresse uniquement à l’énumération et la modification de l’état d’exécution des services. Vous pouvez obtenir la liste des applets de commande de service à l’aide de Get-Command *-Service. Vous pouvez trouver des informations sur chaque applet de commande à l’aide de Get-Help <Cmdlet-Name>, par exemple Get-Help New-Service.

Obtention de services

Vous pouvez obtenir les services sur un ordinateur local ou distant à l’aide de l’applet de commande Get-Service. Comme avec Get-Process, l’utilisation de la commande Get-Service sans paramètres retourne tous les services. Vous pouvez filtrer par nom, même en utilisant un astérisque comme caractère générique :

PS> Get-Service -Name se*

Status   Name               DisplayName
------   ----               -----------
Running  seclogon           Secondary Logon
Running  SENS               System Event Notification
Stopped  ServiceLayer       ServiceLayer

Comme il n’est pas toujours évident d’identifier le nom réel d’un service, il se peut que vous deviez rechercher des services par nom d’affichage. À cette fin, vous pouvez utiliser un nom spécifique, des caractères génériques ou une liste de noms d’affichage :

PS> Get-Service -DisplayName se*

Status   Name               DisplayName
------   ----               -----------
Running  lanmanserver       Server
Running  SamSs              Security Accounts Manager
Running  seclogon           Secondary Logon
Stopped  ServiceLayer       ServiceLayer
Running  wscsvc             Security Center

PS> Get-Service -DisplayName ServiceLayer, Server

Status   Name               DisplayName
------   ----               -----------
Running  lanmanserver       Server
Stopped  ServiceLayer       ServiceLayer

Obtention des services distants

Avec Windows PowerShell, vous pouvez utiliser le paramètre ComputerName de l’applet de commande Get-Service pour obtenir les services sur des ordinateurs distants. Le paramètre ComputerName acceptant plusieurs valeurs et caractères génériques, vous pouvez obtenir les services sur plusieurs ordinateurs à l’aide d’une seule commande. Par exemple, la commande suivante obtient les services sur l’ordinateur distant Server01.

Get-Service -ComputerName Server01

À compter de PowerShell 6.0, les applets de commande *-Service n’ont pas le paramètre ComputerName. Vous pouvez toujours obtenir les services sur des ordinateurs distants avec la communication à distance PowerShell. Par exemple, la commande suivante obtient les services sur l’ordinateur distant Server02.

Invoke-Command -ComputerName Server02 -ScriptBlock { Get-Service }

Vous pouvez également gérer les services avec les autres applets de commande *-Service. Pour plus d’informations sur la communication à distance PowerShell, consultez about_Remote.

Obtention de services requis et dépendants

L’applet de commande Get-Service dispose de deux paramètres très utiles dans l’administration des services. Le paramètre DependentServices obtient les services dépendant de ce service.

Le paramètre RequiredServices obtient les services dont le service LanmanWorkstation dépend.

PS> Get-Service -Name LanmanWorkstation -RequiredServices

Status   Name               DisplayName
------   ----               -----------
Running  MRxSmb20           SMB 2.0 MiniRedirector
Running  bowser             Bowser
Running  MRxSmb10           SMB 1.x MiniRedirector
Running  NSI                Network Store Interface Service

Le paramètre DependentServices permet d’obtenir les services qui nécessitent le service LanmanWorkstation.

PS> Get-Service -Name LanmanWorkstation -DependentServices

Status   Name               DisplayName
------   ----               -----------
Running  SessionEnv         Terminal Services Configuration
Running  Netlogon           Netlogon
Stopped  Browser            Computer Browser
Running  BITS               Background Intelligent Transfer Ser...

La commande suivante obtient tous les services qui ont des dépendances. L’applet de commande Format-Table pour afficher les propriétés Status, Name, RequiredServices, et DependentServices des services.

Get-Service -Name * | Where-Object {$_.RequiredServices -or $_.DependentServices} |
  Format-Table -Property Status, Name, RequiredServices, DependentServices -auto

Arrêt, démarrage, interruption et redémarrage de services

Les applets de commande Service ont toutes la même forme générale. Les services peuvent être spécifiés par un nom commun ou nom d’affichage, et prennent des listes et des caractères génériques pour valeurs. Pour arrêter le spouleur d’impression, utilisez ce qui suit :

Stop-Service -Name spooler

Pour démarrer le spouleur d’impression suite à un arrêt, utilisez ce qui suit :

Start-Service -Name spooler

Pour interrompre le spouleur d’impression, utilisez ce qui suit :

Suspend-Service -Name spooler

L’applet de commande Restart-Service fonctionne de la même manière que les autres applets de commande de service :

PS> Restart-Service -Name spooler

WARNING: Waiting for service 'Print Spooler (Spooler)' to finish starting...
WARNING: Waiting for service 'Print Spooler (Spooler)' to finish starting...
PS>

Remarquez que vous obtenez un message d’avertissement répété sur le démarrage du spouleur d’impression. Lorsque vous effectuez une opération de service qui prend un certain temps, PowerShell vous informe qu’il tente toujours d’effectuer la tâche.

Si vous souhaitez redémarrer plusieurs services, vous pouvez obtenir la liste des services, filtrer ceux-ci, puis effectuer le redémarrage :

PS> Get-Service | Where-Object -FilterScript {$_.CanStop} | Restart-Service

WARNING: Waiting for service 'Computer Browser (Browser)' to finish stopping...
WARNING: Waiting for service 'Computer Browser (Browser)' to finish stopping...
Restart-Service : can't stop service 'Logical Disk Manager (dmserver)' because
 it has dependent services. It can only be stopped if the Force flag is set.
At line:1 char:57
+ Get-Service | Where-Object -FilterScript {$_.CanStop} | Restart-Service <<<<
WARNING: Waiting for service 'Print Spooler (Spooler)' to finish starting...
WARNING: Waiting for service 'Print Spooler (Spooler)' to finish starting...

Ces applets de commande Service ne dispose pas de paramètre ComputerName, mais vous pouvez les exécuter sur un ordinateur distant à l’aide de l’applet de commande Invoke-Command. Par exemple, la commande suivante redémarre le service Spouleur sur l’ordinateur distant Server01.

Invoke-Command -ComputerName Server01 {Restart-Service Spooler}

Définition des propriétés d’un service

L’applet de commande Set-Service change les propriétés d’un service sur un ordinateur local ou distant. Étant donné que l’état d’un service est une propriété, vous pouvez utiliser cette applet de commande pour démarrer, arrêter et suspendre un service. L’applet de commande Set-Service dispose également d’un paramètre StartupType qui permet de modifier le type de démarrage du service.

Pour utiliser Set-Service sur Windows Vista et les versions ultérieures de Windows, ouvrez PowerShell avec l’option Exécuter en tant qu’administrateur.

Pour plus d’informations, consultez Set-Service

Voir aussi