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