Gérer les services et les processus

La gestion des services et des processus est également à prendre en considération, d’une part car il arrive parfois que l’on ait besoin de démarrer, de redémarrer ou d’arrêter un service, d’autre part car il est nécessaire parfois d’analyser la liste des processus en cours (exemple : quel processus consomme trop de mémoire vive ?), voir même de tuer un processus.

I. Gestion des services

Tout d’abord, on va voir différentes actions qui permettent de lister les services, comme par exemple tous les services ou tous les services démarrés.

Pour un listing pur et dur de tous les services, on exécutera simplement cette commande :

Get-Service

Maintenant, on va lister uniquement les services en cours d’exécution, c’est-à-dire les services « running » (ceux en arrêts sont « stopped ») :

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

gerer-services-processus-powershell-windows-01

Pour rechercher un service dans la liste, on s’appuiera sur son « DisplayName » pour le retrouver plus facilement. Par exemple, pour retrouver le service lié à Windows Update :

Get-Service | Where{ $_.DisplayName -like "*Update*" }

gerer-services-processus-powershell-windows-02

On remarque que le nom du service Windows Update est « wuauserv ». Si l’on souhaite arrêter ce service :

Stop-Service -Name wuauserv

Dans la commande ci-dessus, on remarque qu’il suffit d’utiliser la commande « Stop-Service » suivie du nom du service ciblé. Pour vérifier que le service est bien « stopped », on liste l’état de ce service :

Get-Service -Name wuauserv

Pour le fun, on va démarrer ce service que l’on vient d’arrêter. On aurait pu faire comme pour l’arrêt, en remplaçant « Stop-Service » par « Start-Service » suivit du nom du service, mais on va procéder autrement. On va réaliser un « Get » pour récupérer la liste de service (un service ciblé explicitement par son nom dans ce cas précis) et via le pipe on va indiquer qu’on veut le démarrer.

Comprenez qu’avec cette méthode il est possible de démarrer ou de stopper un grand nombre de services simultanément (il suffit de jouer sur la sélection, éventuellement avec une clause where intermédiaire).

Get-Service -Name wuauserv | Start-Service

La copie d’écran ci-dessous résume les actions d’arrêt du service et de démarrage de ce même service. Des étapes intermédiaires de contrôles sont ajoutées afin de vérifier l’état du service.

gerer-services-processus-powershell-windows-03

Enfin, pour redémarrer un service, on utilisera tout simplement le commandlet « Restart-Service ». On va maintenant passer à la gestion des processus, vous allez voir c’est tout aussi simple, et la logique reste la même.

II. Gestion des processus

À l’instar de la gestion des services, la gestion des processus s’effectue également par des commandes de type « Start-* » et « Stop-* », à la différence qu’il n’y a pas de commande pour redémarrer ou plutôt relancer le processus.

On va commencer par exécuter le navigateur Mozilla Firefox que nous avons installé précédemment. Pour cela, saisissez les deux commandes suivantes :

PS C:\> cd 'C:\Program Files (x86)\Mozilla Firefox\'
PS C:\Program Files (x86)\Mozilla Firefox> .\firefox.exe

Une fois le navigateur démarré, on peut suivre le comportement du processus en PowerShell. Par l’intermédiaire de « Get-Process » et du nom du processus, ici « firefox », on obtiendra davantage d’informations :

Get-Process -Name firefox

gerer-services-processus-powershell-windows-04

En ajoutant l’option « FileVersionInfo » et un affichage en forme de liste, on obtiendra des informations sur l’exécutable à l’origine de ce processus, notamment le chemin vers cet exécutable (FileName). Pour illustrer mes propos, voici l’exemple pour le processus firefox :

Get-Process -Name firefox -FileVersionInfo | fl

 

gerer-services-processus-powershell-windows-05

À tout moment on peut tuer un processus grâce à la commande « Stop-Process » suivie du nom du processus ciblé, comme on le faisait pour un service. Ensuite, si l’on cherche à faire un « Get » sur ce processus que l’on vient de fermer, un message d’erreur sera retourné, car le processus est introuvable.

Si c’est bien le cas, alors l’opération est un succès et je vous félicite !

Stop-Process -Name firefox

gerer-services-processus-powershell-windows-06

Une application qui démarre exécute un processus sur le serveur. De ce fait, on peut déclencher le démarrage d’une application, ce qui aura pour effet de démarrer l’application.

Pour parvenir à cela, on s’appuie sur le commandlet « Start-Process » qui requiert le chemin vers le fichier exécutable à démarrer (FilePath). Pour Firefox, voici la commande correspondante :

Start-Process -FilePath "C:\Program Files (x86)\Mozilla Firefox\firefox.exe"

gerer-services-processus-powershell-windows-07

Grâce à ces quelques commandlets très simples d’utilisation, vous êtes en mesure de gérer l’état des services et des processus sur votre serveur, le tout via PowerShell. Si vous avez bien compris toutes les notions abordées dans ce module, vous êtes prêt à passer à la suite !

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Florian Burnel

Ingénieur système et réseau et cofondateur d'IT-Connect. Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.

florian has 3218 posts and counting.See all posts by florian