使用PowerShell获取进程位置路径

时间:2015-07-13 02:25:55

标签: powershell path location

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

示例

AddForce

当我运行命令

ViewportToWorldPoint

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

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=C:\Program Files (x86)\Mozilla Firefox @{Path=C:\Windows\sysWOW64\WindowsPowerShell\v1.0 @{Path=C:\Program Files (x86)\Internet Explorer

Split-Path

2 个答案:

答案 0 :(得分:10)

$path = Get-Process | Select-Object Path

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

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

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

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

 $path | Split-path

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

Get-Process | Select-Object -ExpandProperty Path

答案 1 :(得分:4)

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

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

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