2 votes

script pour obtenir tous les services "arrêtés" avec le type de démarrage "automatique" -- Windows

Ainsi, si un service a un type de démarrage "automatique" ou "manuel" mais qu'il est actuellement arrêté, je voudrais exécuter une commande pour voir ces problèmes.

Dans powershell et CMD, je suis capable de voir l'un OU l'autre, mais il n'y a pas de moyen facile à trouver pour filtrer les données selon mes besoins.

Je cherche essentiellement à faire script pour les services de dépannage. Il va pouvoir déterminer s'il y a des services qui devraient être démarrés (en fonction de leur type de démarrage) mais qui ne sont pas en cours d'exécution (arrêtés ou suspendus).

Le problème auquel je me heurte est que powershell ou CMD ne permettent pas de filtrer ou de canaliser les résultats en profondeur. Quelqu'un peut-il m'aider à résoudre ce problème ?

Comment puis-je m'y prendre pour résoudre ce problème ?

3voto

Seth Points 8547

En regardant cette question vous pourriez trouver ça pour les anciennes versions de PowerShell :

Get-WmiObject -Class Win32_Service | Select-Object Name,State,StartMode | Where-Object {$_.State -ne "Running" -and $_.StartMode -eq "Auto"}

Avec les versions plus récentes (au moins 5, peut-être 3/4), vous pouvez également utiliser (ce qui a été suggéré par JC2k8) :

Get-Service | Select-Object -Property Name,Status,StartType | Where-Object {$_.Status -eq "Stopped" -and $_.StartType -eq "Automatic"}

Dans les anciennes versions de PowerShell, l'option Get-Service La cmdlet ne propose pas de membre qui a l'attribut StartType .

PowerShell supporte beaucoup de filtrage et de tuyauterie :)

2voto

(get-service|?{ $_.Status -eq "Stopped" -and $_.StartType -eq "Automatic"})|
select DisplayName, StartType, Status

0voto

Fabio Ramirez Points 1

Vous pouvez essayer ceci si cela correspond à votre problème. Le code ci-dessous vous aide à démarrer tous les services arrêtés liés à Sophos AV qui devraient être exécutés parce qu'ils ont le type de démarrage automatique.

# Start specific automatic start services not running
$service = "*sophos*"
$server = "<server_name>"
$stoppedServices = (Get-WmiObject Win32_Service -ComputerName $server | Where-Object {$_.Name -like $service -and $_.StartMode -eq 'Auto' -and $_.State -ne "Running"}).Name
foreach ($stoppedService in $stoppedServices) {
  Write-Host -NoNewline "Starting Server/Service: "; Write-Host -ForegroundColor Green $server"/"$stoppedService
  Get-Service -ComputerName $server -Name $stoppedService | Start-Service
}

0voto

Get-Service | Where-Object {$_.Status -eq "Stopped"} | where starttype -match automatic

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X