我正在尝试使用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
答案 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
的原因。