Comment puis-je obtenir le type de démarrage du service Windows à l'aide de PowerShell et ne pas utiliser WMI ?
J'ai regardé à l'intérieur de la commande Get-Service , et elle ne fournit pas quelque chose pour afficher le "type de démarrage".
Avec PowerShell version 4:
Vous pouvez exécuter une commande comme indiqué ci-dessous:
Get-Service | select -property name,starttype
WMI est le moyen de le faire.
Get-WmiObject -Query "Select StartMode From Win32_Service Where Name='winmgmt'"
Ou
Get-WmiObject -Class Win32_Service -Property StartMode -Filter "Name='Winmgmt'"
Dans PowerShell, vous pouvez utiliser la commande Set-Service :
Set-Service -Name Winmgmt -StartupType Manual
Je n'ai cependant pas trouvé de commande PowerShell pour afficher le type de démarrage. On pourrait supposer que la commande Get-Service fournirait cela, mais cela ne semble pas.
Pour autant que je sache, il n'existe aucun moyen PowerShell "natif" d'obtenir ces informations. Et c'est peut-être plutôt la limitation .NET que PowerShell.
Voici la suggestion d'ajouter cette fonctionnalité à la version suivante:
La solution de contournement WMI est également là, juste au cas où. J'utilise cette solution WMI pour mes tâches et ça marche.
Vous pouvez également utiliser:
(Get-Service 'winmgmt').StartType
Il renvoie uniquement le type de démarrage, par exemple, désactivé.
Une fois que vous avez mis à niveau vers PowerShell version 5 vous pouvez obtenir le type de démarrage.
Pour vérifier la version de PowerShell que vous exécutez, utilisez $PSVersionTable
.
Les exemples ci-dessous concernent le service de pare-feu Windows:
Pour le système local
Get-Service | Select-Object -Property Name,Status,StartType | where-object {$_.Name -eq "MpsSvc"} | Format-Table -auto
Pour un système distant
Get-Service -ComputerName HOSTNAME_OF_SYSTEM | Select-Object -Property MachineName,Name,Status,StartType | where-object {$_.Name -eq "MpsSvc"} | Format-Table -auto
Pour plusieurs systèmes (doit créer le fichier systems.txt)
Get-Service -ComputerName (Get-content c:\systems.txt) | Select-Object -Property MachineName,Name,Status,StartType | where-object {$_.Name -eq "MpsSvc"} | Format-Table -auto
Utilisation:
Get-Service BITS | Select StartType
Ou utiliser:
(Get-Service -Name BITS).StartType
Alors
Set-Service BITS -StartupType xxx
[PowerShell 5.1]
Si vous effectuez une mise à jour vers PowerShell 5, vous pouvez interroger tous les services sur la machine et afficher Nom et StartType et les trier par StartType pour une visualisation facile:
Get-Service |Select-Object -Property Name,StartType |Sort-Object -Property StartType
Vous pouvez également utiliser l'outil sc
pour le définir.
Vous pouvez également l'appeler à partir de PowerShell et ajouter des vérifications supplémentaires si nécessaire. L'avantage de cet outil par rapport à PowerShell est que l'outil sc
peut également définir le type de démarrage sur retard automatique.
# Get Service status
$Service = "Wecsvc"
sc.exe qc $Service
# Set Service status
$Service = "Wecsvc"
sc.exe config $Service start= delayed-auto