-{{tag>windows sysadmin services}}
:TODO_DOCUPDATE:
====== Contrôle des services ======
Commandes de gestion des services sous Windows.
* [[https://stackoverflow.com/questions/33929255/what-is-the-difference-between-starting-a-windows-service-from-c-using-startse/33971670#33971670|Description du mode de démarrage des services (stackoverflow.com)]]
===== Lister les services =====
La commande **net** avec l'argument **start** permet de lister les services en cours d’exécution:
> net start
La commande **sc** est beaucoup plus complète, il est possible notamment de lister les services même inactifs:
> sc query type= service state= all
> sc query type= service state= inactive
Via PowerShell les commandes avec le substantif "Service" permettent de gérer les services:
# Lister les services en cours d'execution triés par nom
Get-Service | Where-Object {$_.Status -eq "Running"} | Sort-Object Name
===== infos sur un service =====
> sc qc mon_service
===== Arrêter un service =====
Pour arrêter un service en cours d’exécution ou pourra utiliser indifféremment **net** ou **sc**:
> net stop "mon service"
> sc stop "mon service"
===== Power Shell =====
Sous Power Shell, les commandes **get-service**, **start-service**, **stop-service**, **restart-service** sont disponibles:
Pour lister les services et leur statut:
PS> get-service
===== Listing nom de services =====
^ nom ^ Description |
| appmgmt | service ajout/suppression de programmes. |
| mpssvc | Pare-feu Windows |
===== Arguments =====
* [[https://stackoverflow.com/questions/7190480/modifying-the-path-to-executable-of-a-windows-service|Modifier l'attribut binpath du service (stackoverflow.com)]].
* [[https://stackoverflow.com/questions/42812333/pass-an-argument-to-a-windows-service-at-automatic-startup|Passer des arguments aux services (stackoverflow.com)]].
La commande **sc** propose l' argument **binPath** pour spécifier le binaire et les arguments transmis au service lors du démarrage :
sc config binPath=
Dans la base de registre la valeur correspond est **ImagePath**, elle peut être modifiée via l'éditeur de registre:
* Déployer ''Ordinateur\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services'' ;
* Déployer la clé correspondant au service cible ;
* Sélectionner la valeur **ImagePath** et modifier son contenu.
La modification du registre peut également se faire via PowerShell :
Set-ItemProperty -Path "HKLM:\System\CurrentControlSet\Services\aService" -Name ImagePath -Value "C:\Program Files (x86)\aService\NewName.exe -anArg=aValue"
Modifier
Get-CimInstance win32_service -Filter "Name='My Service'" | Invoke-CimMethod -MethodName Change -Arguments @{PathName="C:\Program Files\My Service\NewName.exe"}
===== Références =====
* http://www.zebulon.fr/dossiers/31-2-services.html
* https://www.ntweekly.com/2015/11/16/how-to-restart-wsus-service-using-powershell/