使用PowerShell获取进程位置路径

Ish*_*han 6 powershell location path

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

C:\Program Files (x86)\Mozilla Firefox
C:\Windows\sysWOW64\WindowsPowerShell\v1.0
C:\Program Files (x86)\Internet Explorer
Run Code Online (Sandbox Code Playgroud)

当我运行命令

$path = Get-Process | Select-Object Path
Split-Path $path
Run Code Online (Sandbox Code Playgroud)

我得到以下输出,我不是我想要的.为什么要添加@ {Path =

@{Path=C:\Program Files (x86)\Mozilla Firefox
@{Path=C:\Windows\sysWOW64\WindowsPowerShell\v1.0
@{Path=C:\Program Files (x86)\Internet Explorer
Run Code Online (Sandbox Code Playgroud)

当我Split-Path按如下方式运行时,它会给我正确的输出C:\Windows\sysWOW64\WindowsPowerShell\v1.0.

$pshpath = "C:\Windows\sysWOW64\WindowsPowerShell\v1.0\powershell.exe"
Split-Path $pshpath
Run Code Online (Sandbox Code Playgroud)

Kir*_*ran 11

$path = Get-Process | Select-Object Path
Run Code Online (Sandbox Code Playgroud)

返回一个对象数组.数组中的每个对象都将具有属性"Path"以及可选值.

split-path的'path'参数采用'string'参数,因此当你运行时 Split-Path $path

我猜每个对象都被转换为类型字符串,因此您可以获得哈希表格式输出.

split-path可以通过属性名称从管道接受路径值,因此您可以执行以下操作:

 $path | Split-path
Run Code Online (Sandbox Code Playgroud)

如果您只是想要路径,也许您可​​以尝试:

Get-Process | Select-Object -ExpandProperty Path
Run Code Online (Sandbox Code Playgroud)


Pet*_*orf 5

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

ps | % {$_.Path}
Run Code Online (Sandbox Code Playgroud)

或完整语法:

Get-Process | ForEach-Object {$_.Path}
Run Code Online (Sandbox Code Playgroud)

使用时:

$path = Get-Process | Select-Object Path
Run Code Online (Sandbox Code Playgroud)

让我们看一下$ path是什么:

$path | Get-Member
Run Code Online (Sandbox Code Playgroud)

你会得到:

   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
Run Code Online (Sandbox Code Playgroud)

所以Path不是字符串,而是NoteProperty,我想这就是为什么您不能Split-Path直接使用的原因。