Gérer les services en PowerShell avec Set-Service
jeudi 1 septembre 2016 à 11:50I. 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 :
Via l’interface graphique, ce nom d’usage peut être trouvé en faisait un clic droit « Propriétés » sur le service ciblé :
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é :
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 !