【发布时间】:2011-05-17 07:56:35
【问题描述】:
如何使用 PowerShell 而不使用 WMI 获取 Windows 服务启动类型?
我查看了Get-Service 命令的内部,它没有提供显示“启动类型”的内容。
【问题讨论】:
标签: powershell windows-services
如何使用 PowerShell 而不使用 WMI 获取 Windows 服务启动类型?
我查看了Get-Service 命令的内部,它没有提供显示“启动类型”的内容。
【问题讨论】:
标签: powershell windows-services
据我所知,没有“本地”PowerShell 方法可以获取此信息。也许它是 .NET 的限制而不是 PowerShell。
以下是将此功能添加到下一个版本的建议:
WMI 解决方法也在那里,以防万一。我将这个 WMI 解决方案用于我的任务并且它有效。
【讨论】:
WMI 就是这样做的方法。
Get-WmiObject -Query "Select StartMode From Win32_Service Where Name='winmgmt'"
或者
Get-WmiObject -Class Win32_Service -Property StartMode -Filter "Name='Winmgmt'"
【讨论】:
在 PowerShell 中你可以使用命令Set-Service:
Set-Service -Name Winmgmt -StartupType Manual
不过,我还没有找到用于查看启动类型的 PowerShell 命令。有人会认为 Get-Service 命令会提供这一点,但似乎没有。
【讨论】:
如果您更新到 PowerShell 5,您可以查询机器上的所有服务并显示 Name 和 StartType 并按 StartType 对其进行排序以便于查看:
Get-Service |Select-Object -Property Name,StartType |Sort-Object -Property StartType
【讨论】:
使用 PowerShell 版本 4:
您可以运行如下命令:
Get-Service | select -property name,starttype
【讨论】:
| Select-Object * 将列出Windows 10 上使用PowerShell 的所有 属性PSVersion=5.1.17134.407
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
【讨论】:
(Get-Service -Name MpsSvc).StartType
您也可以使用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
【讨论】:
你也可以使用:
(Get-Service 'winmgmt').StartType
它只返回启动类型,例如,disabled。
【讨论】:
用途:
Get-Service BITS | Select StartType
或使用:
(Get-Service -Name BITS).StartType
那么
Set-Service BITS -StartupType xxx
[PowerShell 5.1]
【讨论】:
【讨论】: