如何使用PowerShell获取Windows服务启动类型而不使用WMI?
我查看了Get-Service命令,但没有提供显示“启动类型”的内容。
答案 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限制。
以下是将此功能添加到下一版本的建议:
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)