Vérification de l’état des services sur les clients Windows

PowerShell est un excellent outil de script. Non seulement il vous permet de gagner du temps, mais il offre également une plus grande flexibilité pour exécuter des tâches répétées manuellement ou via des tâches planifiées. Presque tous les rôles et fonctionnalités de Windows sont livrés avec des cmdlets PowerShell.

Vous pouvez utiliser les cmdlets du système d’exploitation Windows, disponibles par défaut, pour effectuer des tâches opérationnelles telles que la vérification de l’état d’un service Windows particulier sur plusieurs ordinateurs, la vérification de la liste des logiciels installés sur les ordinateurs Windows, la vérification et la collecte des rôles et fonctionnalités installés sur les systèmes d’exploitation Windows Server et bien plus encore.Windows Server Tutoriels

L’une des tâches fréquemment effectuées par les administrateurs Windows consiste à vérifier l’état des services critiques sur les serveurs de production critiques tels que les serveurs Exchange, les serveurs SQL et/ou les contrôleurs de domaine Active Directory.

Bien que vous puissiez utiliser SCCM et des outils similaires pour vous fournir un rapport sur l’état des services d’un ensemble particulier de machines, SCCM exige que le client SCCM fonctionne sur tous les ordinateurs cibles avant que SCCM puisse faire un rapport sur l’état des services.

C’est là que notre dernier script et notre dernier tutoriel sur le serveur sont utiles. Vous pouvez utiliser le script PowerShell expliqué dans cet article pour vérifier rapidement et facilement l’état de services particuliers sur un seul ou plusieurs ordinateurs Windows.

Vérification de l’état d’un service unique

Si vous souhaitez vérifier l’état d’un service particulier sur un ordinateur distant, ce que vous pouvez faire est d’exécuter la commande PowerShell ci-dessous :

Get-WMIObject -Computer -Query "Select * From Win32_Service WHERE Name Like "%SomeServiceName%"

L’exécution de la commande PowerShell ci-dessus vous aidera à obtenir l’état d’un service spécifique spécifié dans le paramètre « %SomeServiceName% ». Cette commande se connecte à un ordinateur distant spécifié dans le paramètre « -Computer ». Vous voudrez probablement modifier les noms de l’ordinateur et du service avant d’exécuter la commande ci-dessus.

Vérification de l’état de plusieurs services

Dans le cas où vous voudriez obtenir une liste de tous les services Windows qui sont exécutés sur un système cible, exécutez la commande PowerShell suivante :

Get-WMIObject Win32_Service -Computer | Where {$_.State -eq "Running"} | FT -Auto

La commande ci-dessus énumérera tous les services Windows qui sont exécutés à partir de l’ordinateur distant spécifié dans le paramètre « -Computer », et la sortie sera affichée dans la fenêtre PowerShell. Si vous souhaitez enregistrer la sortie dans un fichier CSV, l’ajout de « Export-CSV » fera le travail comme le montre cette commande:

Get-WMIObject Win32_Service -Computer | Where {$_.State -eq "Running"} | FT -Auto | Export-CSV "C:TempServicesStatus.CSV"

Vérification de l’état d’un seul service sur plusieurs ordinateurs

Alors que les commandes PowerShell ci-dessus vous aideront à obtenir l’état d’un ou plusieurs services spécifiques à partir d’un seul ordinateur Windows, le script PowerShell suivant peut être utilisé si vous souhaitez voir l’état d’un seul service à partir de plusieurs ordinateurs Windows. Tout ce que vous devez faire est de créer un fichier texte qui contient les noms des ordinateurs Windows et de modifier la variable de script « $ServiceNameToCheck » pour inclure le service que vous souhaitez vérifier.

$ServiceNameToCheck ="SomeServiceName"
$ReportFile = "C:TempServiceStatus.CSV"
Remove-item $ReportFile -ErrorAction SilentlyContinue
$ThisSTR = "Computer Name, Service Status"
Add-Content $ReportFile $ThisSTR
$CompFile = "C:TempComputers.TXT"

Foreach ($ComputerName in Get-Content "$CompFile")
{
$Error.Clear()
Get-WMIObject -Computer $ComputerName -Query "Select * From Win32_Service WHERE Name Like "%$ServiceNameToCheck% AND {$_.State -eq "Running"}
IF ($Error.Count -ne 0)
{
$ThisSTR = $ComputerName+", Could Not Connect to Remote Computer or Service Not Running"
Add-Content $ReportFile $ThisSTR
}
else
{
$ThisSTR = $ComputerName+", Running"
Add-Content $ReportFile $ThisSTR
}
Write-Host "Service status was retrieved from the list of computers and the output was saved in $ReportFile"

Une fois que le script PowerShell ci-dessus a fini de s’exécuter, un fichier de rapport sera créé nommé ServiceStatus.CSV dans le dossier « C:Temp » qui contient l’état du nom du service spécifié dans la variable « $ServiceNameToCheck » de tous les ordinateurs mentionnés dans le fichier « C:TempComputers.TXT ».

Notez que le script vérifie que la commande a été exécutée avec succès avant de signaler l’état du service. Le script PowerShell utilise la cmdlet PowerShell « Get-WMIObject » pour collecter l’état du ou des services spécifiques des ordinateurs cibles. Dans le cas où le Get-WMIObject ne peut pas se connecter à un ordinateur cible ou si l’état du service n’est pas récupéré, il renvoie un message « Could Not Connect to Remote Computer or Service Not Running » dans le rapport.

Conclusion

Il est assez facile d’obtenir l’état d’un ou plusieurs services à partir d’un ou plusieurs ordinateurs Windows distants. Bien qu’il existe des outils d’entreprise pour collecter un inventaire des ordinateurs Windows, y compris l’état des services, il y a aussi des cas où ces commandes/scripts PowerShell s’avèrent très pratiques, notamment lorsque vous devez vérifier rapidement l’état d’un service particulier sur plusieurs ordinateurs Windows.

Nirmal Sharma est un MCSEx3, MCITP et Microsoft MVP en services d’annuaire. Il est spécialisé dans les services d’annuaire, Microsoft Azure, les clusters Failover, Hyper-V, System Center et Exchange Servers, et s’intéresse aux technologies Microsoft depuis 1994. Pendant son temps libre, il aime aider les autres et partager une partie de ses connaissances en écrivant des conseils et des articles sur divers sites et en contribuant aux Health Packs pour les solutions ADHealthProf.ITDynamicPacks.Net. Nirmal peut être joint à l’adresse suivante :

Suivez ServerWatch sur Twitter et sur Facebook

.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.