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)
要获取所有路径的列表,只需使用:
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直接使用的原因。
| 归档时间: |
|
| 查看次数: |
21520 次 |
| 最近记录: |