Je vais aborder dans cet article la manipulation des services. Nous allons voir comment démarrer et arrêter un service (local ou distance), et comment reconfigurer un service (local). Pour ces actions, j'ai choisi d'utiliser la classe WMI Win32_Service pour tout ce qui est manipulation à distance. Par contre j'utilise la commande "Set-Service" pour reconfigurer un service en local.
#Pour arrêter un service, je récupéré un object Wmi.
#Le "." représente l'ordinateur local.
#AudioSrv est le nom du service.
$service = Get-WmiObject -Class Win32_Service -ComputerName . -Filter "Name=""AudioSrv"""
#Si l'objet Wmi n'est pas vide, j’exécute la méthode "stopservice".
if ($service) { $rtn = $service.stopservice() }
#Pour démarrer un service, je récupéré un object Wmi.
$service = Get-WmiObject -Class Win32_Service -ComputerName . -Filter "Name=""AudioSrv"""
#Si l'objet Wmi n'est pas vide, j’exécute la méthode "startservice".
if ($service) { $rtn = $service.stopservice() }
#Pour modifier un service local j'utilise la commande Set-Service.
#Option : "Manual", "Automatic" ou "Disable".
Set-Service -Name AudioSrv -StartupType Automatic
#Le "." représente l'ordinateur local.
#AudioSrv est le nom du service.
$service = Get-WmiObject -Class Win32_Service -ComputerName . -Filter "Name=""AudioSrv"""
#Si l'objet Wmi n'est pas vide, j’exécute la méthode "stopservice".
if ($service) { $rtn = $service.stopservice() }
#Pour démarrer un service, je récupéré un object Wmi.
$service = Get-WmiObject -Class Win32_Service -ComputerName . -Filter "Name=""AudioSrv"""
#Si l'objet Wmi n'est pas vide, j’exécute la méthode "startservice".
if ($service) { $rtn = $service.stopservice() }
#Pour modifier un service local j'utilise la commande Set-Service.
#Option : "Manual", "Automatic" ou "Disable".
Set-Service -Name AudioSrv -StartupType Automatic
Voici également les commandes alternatif mais uniquement local pour démarrer ou arrêter un service.
#Démarrer un service local.
Start-Service AudioSrv
#Stopper un service local.
Stop-Service AudioSrv
Start-Service AudioSrv
#Stopper un service local.
Stop-Service AudioSrv
Pour finir cet article, je vous propose une fonction qui permet de redémarrer un service local ou distant.
#Redémarre un service local ou distant.
Function restart_service([string] $computer,[string] $service)
{
#Je vérifie si $computer est l'ordinateur local ou pas.
$local = (Get-Item "Env:computername").Value
if ($computer -eq $local)
{
#Si l'ordinateur cible est celui ou est exécuter le script j'utilise le ".".
$objsvc = Get-WmiObject -Class Win32_Service -ComputerName . -Filter "Name=""$($service)"""
}
else
{
#Sinon j'utilise le nom $computer.
$objsvc = Get-WmiObject -Class Win32_Service -ComputerName $computer -Filter "Name=""$($service)"""
}
#Je vérifie si mon objet service est bien initialisé.
if ($objsvc)
{
#J’arrête le service.
$rt1 = $objsvc.stopservice()
if ($rt1.returnValue -eq 0)
{
#Pause pour vérifier si le service est bien arrêter.
sleep -s 5
#Je redémarre le service.
$rt2 = $objsvc.startservice()
if ($rt2.returnValue -eq 0)
{
Write-Host "Redémarrage du Service réussi !"
}
else
{
Write-Host "Echec du Redémarrage du Service."
}
}
else
{
Write-Host "Echec du l’arrêt du Service."
}
}
else
{
Write-Host "Impossible de trouver le service."
}
}#Function.
#Appel de la fonction.
restart_service MonPoste AudioSrv
#Fin.
Function restart_service([string] $computer,[string] $service)
{
#Je vérifie si $computer est l'ordinateur local ou pas.
$local = (Get-Item "Env:computername").Value
if ($computer -eq $local)
{
#Si l'ordinateur cible est celui ou est exécuter le script j'utilise le ".".
$objsvc = Get-WmiObject -Class Win32_Service -ComputerName . -Filter "Name=""$($service)"""
}
else
{
#Sinon j'utilise le nom $computer.
$objsvc = Get-WmiObject -Class Win32_Service -ComputerName $computer -Filter "Name=""$($service)"""
}
#Je vérifie si mon objet service est bien initialisé.
if ($objsvc)
{
#J’arrête le service.
$rt1 = $objsvc.stopservice()
if ($rt1.returnValue -eq 0)
{
#Pause pour vérifier si le service est bien arrêter.
sleep -s 5
#Je redémarre le service.
$rt2 = $objsvc.startservice()
if ($rt2.returnValue -eq 0)
{
Write-Host "Redémarrage du Service réussi !"
}
else
{
Write-Host "Echec du Redémarrage du Service."
}
}
else
{
Write-Host "Echec du l’arrêt du Service."
}
}
else
{
Write-Host "Impossible de trouver le service."
}
}#Function.
#Appel de la fonction.
restart_service MonPoste AudioSrv
#Fin.