使用PowerShell获取启动类型的Windows服务

时间:2010-11-29 14:48:38

标签: powershell windows-services

如何使用PowerShell获取Windows服务启动类型而不使用WMI

我查看了Get-Service命令,但没有提供显示“启动类型”的内容。

10 个答案:

答案 0 :(得分:36)

WMI就是这样做的方式。

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

或者

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

答案 1 :(得分:23)

使用PowerShell版本4:

您可以按以下方式运行命令:

   Get-Service | select -property name,starttype

答案 2 :(得分:13)

在PowerShell中,您可以使用命令Set-Service

Set-Service -Name Winmgmt -StartupType Manual

我还没有找到PowerShell命令来查看启动类型。可以假设命令Get-Service会提供,但似乎没有。

答案 3 :(得分:9)

据我所知,没有“原生”PowerShell获取此信息的方式。也许它比.NET Shell限制。

以下是将此功能添加到下一版本的建议:

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

WMI解决方法也在那里,以防万一。我将这个WMI解决方案用于我的任务,它可以工作。

答案 4 :(得分:5)

您也可以使用:

(Get-Service 'winmgmt').StartType

它只返回启动类型,例如,禁用

答案 5 :(得分:4)

一旦你upgraded to PowerShell version 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

答案 6 :(得分:3)

使用:

Get-Service BITS | Select StartType

或使用:

(Get-Service -Name BITS).StartType

<强> 然后

Set-Service BITS -StartupType xxx

[PowerShell 5.1]

答案 7 :(得分:1)

如果您更新到PowerShell 5,您可以查询计算机上的所有服务并显示Name和StartType,并按StartType对其进行排序以便于查看:

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

答案 8 :(得分:1)

您还可以使用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

答案 9 :(得分:1)

使用PowerShell 4是可能的。

Get-Service *spool* | select name,starttype | ft -AutoSize

screenshot