Powershell 有没有办法在Get service和Get WmiObject命令中包含服务实例?
我正在尝试编写一个脚本,如果服务存在,它将停止服务。我要停止的服务有多个实例,我试图根据给定的实例名获取服务(它显示为Powershell 有没有办法在Get service和Get WmiObject命令中包含服务实例?,powershell,windows-services,Powershell,Windows Services,我正在尝试编写一个脚本,如果服务存在,它将停止服务。我要停止的服务有多个实例,我试图根据给定的实例名获取服务(它显示为ServiceName$InstanceName) 奇怪的是,当我运行以下命令时: Get-Service -Name "ServiceName*" | Format-List -Property Name 或 结果如下: Name : ServiceName$InstanceNameA Name : ServiceName$InstanceNameB Name : Ser
ServiceName$InstanceName
)
奇怪的是,当我运行以下命令时:
Get-Service -Name "ServiceName*" | Format-List -Property Name
或
结果如下:
Name : ServiceName$InstanceNameA
Name : ServiceName$InstanceNameB
Name : ServiceName$InstanceNameC
Name : ServiceName$InstanceNameD
Name : ServiceName$InstanceNameE
Name : ServiceName$InstanceNameF
鉴于上述结果,我假设如果我想用InstanceNameC
实例搜索名为ServiceName
的服务,我可以执行以下操作
Get-Service -Name "ServiceName$InstanceNameC"
或
但它并不像我预期的那样有效
我想一个冗长的问题是:我是否可以通过传递正确的服务名称
ServiceName$InstanceName
来查找/获取特定的服务实例?我显然没有使用powershell的经验,但只是发现添加backtick(`)转义将服务名与实例名分开的美元符号可以使Get服务按预期工作
以下是有效的方法:
Get-Service -Name "ServiceName`$InstanceNameC"
我显然没有使用powershell的经验,但我发现添加backtick(`)以转义将服务名称与实例名称分开的美元符号可以让Get服务按我的预期工作 以下是有效的方法:
Get-Service -Name "ServiceName`$InstanceNameC"
您试图检索的服务的名称是什么?您可以使用
Get Service | Get Member
查看您可以使用Where Object
@过滤掉的属性,这些属性不正确请参见我的答案。我在发布我的问题后找到了这个答案:可能是@TheIncorrigible1的复制品,希望我们能找到更好的复制品。这一个并没有真正解释正在发生的事情,也没有给出其他简单的解决方案。您试图检索的服务的名称是什么?您可以使用Get Service | Get Member
查看您可以使用Where Object
@过滤掉的属性,这些属性不正确请参见我的答案。我在发布我的问题后找到了这个答案:可能是@TheIncorrigible1的复制品,希望我们能找到更好的复制品。这并不能真正解释正在发生的事情,也不能给出其他简单的解决方案。$
用于变量。它们将在双引号内展开。它试图找到名为“ServiceName”的服务名称,因为您没有名为$instancename
的变量。这也会起作用:Get WmiObject-Class Win32_Service-Filter'name=“ServiceName$InstanceNameC”
起作用,而我的原因(看起来非常相似)似乎是因为我在单引号之外有双引号。$
用于变量。它们将在双引号内展开。它试图找到名为“ServiceName”的服务名称,因为您没有名为$instancename
的变量。这也会起作用:Get WmiObject-Class Win32_Service-Filter'name=“ServiceName$InstanceNameC”
起作用了,而我没有这样做的原因(看起来非常相似)似乎是因为我在单引号之外有双引号。
Get-Service -Name "ServiceName`$InstanceNameC"