Подтвердить что ты не робот

Получить тип запуска службы Windows с помощью PowerShell

Как получить тип запуска службы Windows с помощью PowerShell и не использовать WMI?

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

4b9b3361

Ответ 1

С версией PowerShell 4:

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

   Get-Service | select -property name,starttype

Ответ 2

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

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

или

Get-WmiObject -Class Win32_Service -Property StartMode -Filter "Name='Winmgmt'"

Ответ 3

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

Set-Service -Name Winmgmt -StartupType Manual

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

Ответ 4

Насколько я знаю, нет никакого "родного" способа 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

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

(Get-Service 'winmgmt').StartType

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

Ответ 6

Как только обновлен до версии 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

Для нескольких систем (необходимо создать файл system.txt)

Get-Service -ComputerName (Get-content c:\systems.txt) | Select-Object -Property MachineName,Name,Status,StartType | where-object {$_.Name -eq "MpsSvc"} | Format-Table -auto

Ответ 7

Вы также можете использовать инструмент 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

Ответ 8

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

Get-Service BITS | Select StartType

Или используйте:

(Get-Service -Name BITS).StartType

Тогда

Set-Service BITS -StartupType xxx

[PowerShell 5.1]

Ответ 9

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

Get-Service |Select-Object -Property Name,StartType |Sort-Object -Property StartType