Gérer les services en PowerShell avec Set-Service

I. Présentation de Set-Service

Dans la suite des tutoriels sur la gestion des services Windows en PowerShell, nous allons aujourd'hui étudier l'utilisation de la commande Set-Service. Nous avons précédemment vue la commande Get-Service qui permet de récupérer des informations à propos des services Windows, Set-service permet de modifier ces informations. Nous pourrons notamment modifier :

  • Le mode de démarrage
  • Les propriétés du services
  • Le status actuel du services

Le tout peut être effectué sur le poste/serveur local (cas par défaut), mais également sur un ou plusieurs serveurs distants.

Note : Pour modifier l'état ou les propriétés d'un service, il faut avoir les droits d'administration sur la machine. Pour un poste/serveur local, pensez donc à ouvrir votre script ou console PowerShell en tant qu'administrateur.

II. Modifier un service

Comme vu précédemment, un service possède plusieurs attributs, nous allons dans cette section voir comment modifier le mode de démarrage et les propriétés du service nommé  "WebClient" :

Changer le mode de démarrage (valeur autorisée : "automatic", "manual" ou "disabled") :

set-service -name WebClient -startuptype automatic

Pour changer le DisplayName (nom d'affichage)

set-service -name WebClient -DisplayName "DisplayName de WebClient"

Même syntaxe pour la description :

set-service -name WebClient -description "Description de WebClient"

Dans chaque cas, la valeur qui suit "-name" permet d'identifier le service à modifier, ce nom d'usage n'est pas modifiable. Dans la fenêtre graphique "Services" de Windows, c'est le DisplayName qui est contenu dans la colonne "Nom" et non le nom d'usage :

set-service03
Fenêtre "Services" en vue graphique sous Windows

Via l'interface graphique, ce nom d'usage peut être trouvé en faisait un clic droit "Propriétés" sur le service ciblé :

set-service02
Trouver le nom d'usage d'un service Windows via l'interface graphique.

Une petite astuce d'utilisation, l'ajout de l'option "-PassThru" permet d'afficher les attributs du service modifié pour constater le changement opéré :

set-service01
Utilisation de l'option "-PassThru" pour afficher les changements opérés.

III. Changer l'état d'un service

Un service peut avoir trois états :

  • Running : en cours de fonctionnement
  • Stopped : Arrêté
  • Paused : En pause

Nous pouvons donc modifier l'état d'un service grâce à la cmdlet Set-service, par exemple pour le service nommé "WebClient" qui est en "Running", il faut exécuter la commande suivante pour l'arrêter :

set-service -name WebClient -Status "Stopped"

A l'inverse, pour le démarrer :

set-service -name WebClient -Status "Running"

A noter que la même opération et faisable sur un serveur distant :

set-service -name WebClient -Status "Running"  -computerName server01

Dans ce cas, il faut bien entendu que "server01" soit un nom DNS resolvable.

Des commandes dédiées à l'arrêt, démarrage et redémarrage des services existent également :

# Redémarrer le service
restart-service WebClient
# Démarrer le service
start-service WebClient
# Arrêter le service
stop-service WebClient
# Mettre le service en pause
suspend-service WebClient
# Reprendre le service après une mise en pause
resume-service WebClient

J'espère que ce tutoriel vous aura été utile. La commande set-service est très souvent utilisée dans le cadre de scripting PowerShell, notamment lorsque l'on peut l'appliquer à plusieurs serveurs en une seule exécution via "-ComputerName". N'hésitez pas à poser vos questions et vos avis dans les commentaires ou sur notre forum !

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

Mickael Dorigny

Fondateur d'IT-Connect.fr et d'Information-security.fr. Auditeur sécurité chez Amossys.

    mickael a publié 475 articles sur IT-Connect.See all posts by mickael

    Laisser un commentaire

    Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *