Получить тип запуска службы Windows с помощью PowerShell - PullRequest
44 голосов
/ 29 ноября 2010

Как я могу получить тип запуска службы Windows, используя PowerShell и не используя WMI ?

Я заглянул внутрь команды Get-Service , и она непредоставьте что-нибудь для отображения «типа запуска».

Ответы [ 9 ]

36 голосов
/ 29 ноября 2010

WMI - способ сделать это.

Get-WmiObject -Query "Select StartMode From Win32_Service Where Name='winmgmt'"

Или

Get-WmiObject -Class Win32_Service -Property StartMode -Filter "Name='Winmgmt'"
23 голосов
/ 18 июля 2016

В PowerShell версии 4:

Вы можете запустить команду, как указано ниже:

   Get-Service | select -property name,starttype
13 голосов
/ 15 апреля 2013

В PowerShell вы можете использовать команду Set-Service :

Set-Service -Name Winmgmt -StartupType Manual

Я не нашел команду PowerShell для просмотра типа запуска.Можно было бы предположить, что команда Get-Service предоставит это, но это не так.

9 голосов
/ 29 ноября 2010

Насколько я знаю, «родного» PowerShell способа получения этой информации не существует. И, возможно, это скорее ограничение .NET, чем PowerShell.

Вот предложение добавить эту функциональность в следующую версию:

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

Обходной путь WMI также существует, на всякий случай. Я использую это решение WMI для своих задач, и оно работает.

5 голосов
/ 02 февраля 2017

Вы также можете использовать:

(Get-Service 'winmgmt').StartType

Возвращает только тип запуска, например, отключен .

4 голосов
/ 13 сентября 2016

После обновления до PowerShell версии 5 вы можете получить тип запуска.

Чтобы проверить версию PowerShell, которую вы используете, используйте $PSVersionTable.

Приведенные ниже примеры относятся к службе брандмауэра Windows:

для локальной системы

Get-Service | Select-Object -Property Name,Status,StartType | where-object {$_.Name -eq "MpsSvc"} | Format-Table -auto

для одной удаленной системы

Get-Service -ComputerName HOSTNAME_OF_SYSTEM | Select-Object -Property MachineName,Name,Status,StartType | where-object {$_.Name -eq "MpsSvc"} | Format-Table -auto

Для нескольких систем (необходимо создать файл 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
3 голосов
/ 06 мая 2017

Использование:

Get-Service BITS | Select StartType

Или использование:

(Get-Service -Name BITS).StartType

Затем

Set-Service BITS -StartupType xxx

[PowerShell5,1]

1 голос
/ 23 ноября 2016

Вы также можете использовать инструмент sc, чтобы установить его.

Вы также можете вызвать его из PowerShell и добавить дополнительные проверки, если это необходимо. Преимущество этого инструмента по сравнению с PowerShell состоит в том, что инструмент sc также может устанавливать тип запуска с автоматической задержкой.

# Get Service status
$Service = "Wecsvc"
sc.exe qc $Service

# Set Service status
$Service = "Wecsvc"
sc.exe config $Service start= delayed-auto
1 голос
/ 04 мая 2016

Если вы обновитесь до PowerShell 5, вы можете запросить все службы на компьютере, отобразить Имя и StartType и отсортировать их по StartType для удобства просмотра:

Get-Service |Select-Object -Property Name,StartType |Sort-Object -Property StartType
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...