如何使用Get-Service命令提取Windows服务的物理路径
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用Get-Service命令提取Windows服务的物理路径相关的知识,希望对你有一定的参考价值。
我需要在Win 2k8上运行的一组服务器上提取所有Windows服务的物理执行路径。因为,这个操作系统附带的powershell版本是2.0,我想使用Get-service命令而不是Get-WmiObject。我知道我可以使用下面给出的命令拉出物理路径
$QueryApp = "Select * from Win32_Service Where Name='AxInstSV'"
$Path = (Get-WmiObject -ComputerName MyServer -Query $QueryApp).PathName
我不希望此命令拉出物理路径,但希望使用PS 2.0版附带的Get-Service命令。
任何帮助将非常感激。
即使使用PowerShell 3,我也看不到使用Get-Service获取它的方法。
这个1-liner将为您提供路径名,尽管只有少量首选的“过滤器左”行为:
gwmi win32_service|?{$_.name -eq "AxInstSV"}|select pathname
或者,如果您只想要字符串本身:
(gwmi win32_service|?{$_.name -eq "AxInstSV"}).pathname
我想做类似的事情,但基于搜索/匹配服务下运行的进程的路径,所以我使用经典的WMI查询语法,然后通过format-table传递结果:
$pathWildSearch = "orton";
gwmi -Query "select * from win32_service where pathname like '%$pathWildSearch%' and state='Running'" | Format-Table -Property Name, State, PathName -AutoSize -Wrap
您可以通过跳过定义和传递$ pathWildSearch将其转换为单行,或者您可以在分号后将gwmi语句返回到继续。
也许不那么冗长,
wmic service where "name='AxInstSV'" get PathName
这应该也适用于命令提示符,而不仅仅是PowerShell。
或者,如果您有进程名称本身,您可以这样做:
wmic process where "name='AxInstSV.exe'" get ExecutablePath
要阅读流程路径,您需要获得许可,因此大多数情况下我都有更好的服务名称。
我无法通过Get-Service命令执行此操作,但如果您的服务以其自己的进程运行,那么您可以通过以下代码使用Get-Process命令:
(Get-Process -Name AxInstSV).path
以上是关于如何使用Get-Service命令提取Windows服务的物理路径的主要内容,如果未能解决你的问题,请参考以下文章
PowerShell Get-Service 查看运行状态的服务并将信息保存成txt文件
从 Window 日志的 .evtx 文件中提取审计事件信息
R语言window函数提取时序数据数据子集(subset):使用xts包将dataframe数据转化为时间序列数据(time series)使用window函数从时间序列对象中提取数据子集