web-dev-qa-db-fra.com

Obtenir le type de démarrage du service Windows à l'aide de PowerShell

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".

46
kubusz

Avec PowerShell version 4:

Vous pouvez exécuter une commande comme indiqué ci-dessous:

   Get-Service | select -property name,starttype
24
Alan Angulo

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'"
36
ravikanth

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.

13
LinWinGuy

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:

https://connect.Microsoft.com/PowerShell/feedback/details/424948/i-would-like-to-see-the-property-starttype-added-to-get-services

La solution de contournement WMI est également là, juste au cas où. J'utilise cette solution WMI pour mes tâches et ça marche.

9
Roman Kuzmin

Vous pouvez également utiliser:

(Get-Service 'winmgmt').StartType

Il renvoie uniquement le type de démarrage, par exemple, désactivé.

5
Marcel Janus

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
4
Brandy Reid

Utilisation:

Get-Service BITS | Select StartType

Ou utiliser:

(Get-Service -Name BITS).StartType

Alors

Set-Service BITS -StartupType xxx

[PowerShell 5.1]

3
Dana

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
1
DannyBoy

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
1
emekm