Powershell 如何获得物理路径知道exe文件的路径?

Powershell 如何获得物理路径知道exe文件的路径?,powershell,Powershell,如果我知道.exe文件的路径,如何获取项目的物理路径 例如: $path = (Get-WmiObject -query "SELECT PathName FROM Win32_Service WHERE Name = 'Name of Service'").PathName cd $path #and this command not work because $path return path with service name 更新:删除文件扩展名后的所有字符,并在找到任何字符时修剪

如果我知道
.exe
文件的路径,如何获取项目的物理路径

例如:

$path = (Get-WmiObject -query "SELECT PathName FROM Win32_Service WHERE Name = 'Name of Service'").PathName

cd $path #and this command not work because $path return path with service name 

更新:删除文件扩展名后的所有字符,并在找到任何字符时修剪双引号:

$p = ($path -replace '^"+([^\.]+\.\w+)\s.+$','$1').Trim('"')
cd (Split-Path $p)
使用Split-Path cmdlet获取文件的目录

 cd (Split-Path $path -Parent)
父参数是默认的拆分位置参数,因此您可以省略它:

 cd (Split-Path $path)

除非您在路径中有空间,否则这将对您有效:

$k = "C:\Windows\System32\svchost.exe -k netsvcs@"
(gci $k.Split()[0]).Directory.FullName
试试这个

更新正则表达式将删除路径名参数,只提供文件路径

$service = gwmi -class Win32_Service | ? {$_.Name -eq "Name of Service"} 
$path = ($service | Select -Expand PathName) -replace "(.+exe).*", '$1'
cd (Split-Path $path)

这是行不通的。路径值的示例是C:\Windows\System32\svchost.exe-knetsvcs@Example路径名的值:
C:\Windows\System32\svchost.exe-k netsvcs