使用PowerShell获取进程位置路径

使用PowerShell获取进程位置路径,powershell,path,location,Powershell,Path,Location,我正在尝试使用PowerShell获取您计算机上当前正在运行的进程的位置 示例 C:\Program Files (x86)\Mozilla Firefox C:\Windows\sysWOW64\WindowsPowerShell\v1.0 C:\Program Files (x86)\Internet Explorer 当我运行命令时 $path = Get-Process | Select-Object Path Split-Path $path 我得到以下输出,这不是我想要的。为什么

我正在尝试使用PowerShell获取您计算机上当前正在运行的进程的位置

示例

C:\Program Files (x86)\Mozilla Firefox
C:\Windows\sysWOW64\WindowsPowerShell\v1.0
C:\Program Files (x86)\Internet Explorer
当我运行命令时

$path = Get-Process | Select-Object Path
Split-Path $path
我得到以下输出,这不是我想要的。为什么要添加@{Path=

@{Path=C:\Program Files (x86)\Mozilla Firefox
@{Path=C:\Windows\sysWOW64\WindowsPowerShell\v1.0
@{Path=C:\Program Files (x86)\Internet Explorer
当我按如下方式运行
splitpath
时,它为我提供了正确的输出
C:\Windows\sysWOW64\WindowsPowerShell\v1.0

$pshpath = "C:\Windows\sysWOW64\WindowsPowerShell\v1.0\powershell.exe"
Split-Path $pshpath
返回一个对象数组。数组中的每个对象都有属性“Path”和可选值

splitpath的'path'参数采用'string'参数,因此当您运行
拆分路径$Path

我猜每个对象都被转换为字符串类型,这样就可以得到哈希表格式的输出

拆分路径可以按属性名称接受管道中的路径值,因此您可以执行以下操作:

 $path | Split-path
如果您只想要路径,或许可以尝试:

Get-Process | Select-Object -ExpandProperty Path

要获得所有路径的列表,只需使用:

ps | % {$_.Path}
或完整语法:

Get-Process | ForEach-Object {$_.Path}
使用时:

$path = Get-Process | Select-Object Path
让我们看看$path是什么:

$path | Get-Member
你会得到:

   TypeName: Selected.System.Diagnostics.Process

Name        MemberType   Definition
----        ----------   ----------
Equals      Method       bool Equals(System.Object obj)
GetHashCode Method       int GetHashCode()
GetType     Method       type GetType()
ToString    Method       string ToString()
Path        NoteProperty System.String Path=C:\windows\system32\atieclxx.exe

因此,路径不是一个字符串,而是一个NoteProperty,我想这就是为什么不能直接使用
分割路径的原因。

如果也需要PID,请使用
Get Process-name java |%{$.Path+“”+$.Id}
   TypeName: Selected.System.Diagnostics.Process

Name        MemberType   Definition
----        ----------   ----------
Equals      Method       bool Equals(System.Object obj)
GetHashCode Method       int GetHashCode()
GetType     Method       type GetType()
ToString    Method       string ToString()
Path        NoteProperty System.String Path=C:\windows\system32\atieclxx.exe