有没有办法在Get-Service和Get-WmiObject命令中包含服务的实例?
问题描述:
我正在尝试编写一个停止服务的脚本,如果它存在。我想停止的服务有多个实例,我试图根据给定的实例名称获取服务(它显示为ServiceName$InstanceName
)。有没有办法在Get-Service和Get-WmiObject命令中包含服务的实例?
奇怪的是,当我运行以下命令:
Get-Service -Name "ServiceName*" | Format-List -Property Name
或
Get-WmiObject -Class Win32_Service -Filter "name like 'ServiceName%'" | Format-List -Property Name
结果如下所示:
Name : ServiceName$InstanceNameA
Name : ServiceName$InstanceNameB
Name : ServiceName$InstanceNameC
Name : ServiceName$InstanceNameD
Name : ServiceName$InstanceNameE
Name : ServiceName$InstanceNameF
鉴于上述结果,我认为如果我想搜索名为ServiceName
的服务,并且实例为InstanceNameC
我可以做类似
Get-Service -Name "ServiceName$InstanceNameC"
或
Get-WmiObject -Class Win32_Service -Filter "name='ServiceName$InstanceNameC'"
但它不工作,我期望的那样。
我想这个冗长的问题是:我可以通过传递适当的服务名称ServiceName$InstanceName
来查找/获取特定服务实例吗?
答
我很明显没有使用PowerShell的经验,但发现添加反引号(`)来转义分隔服务名称和实例名称的美元符号允许Get-Service按我的预期工作。
这里是什么工作:
Get-Service -Name "ServiceName`$InstanceNameC"
什么是你想要检索服务的名称?你可以使用'Get-Service | Get-Member'来查看你可以使用'Where-Object'过滤掉的属性 – TheIncorrigible1
@TheIncorrigible1查看我的答案。我在发布我的问题后发现这个答案:https://stackoverflow.com/a/1615145/1165441 – edhedges
可能重复[Powershell脚本不接受$(美元)符号](https://stackoverflow.com/questions/1615117/ powershell脚本不接受美元符号) – TheIncorrigible1