首页 > 解决方案 > Powershell 单线打印工艺属性

问题描述

我正在尝试自学我的 Powershell (5.1) 并说

PS > Get-Process | Export-CSV process.csv

作为练习,我想提取 process.csv 的第二行,在单独的行上打印 process.csv 的第二行中的所有属性,并使用 PS 单行自动编号。

在 *nix 中,我会说类似

head -2 process.csv | tail -1 | tr "," "\n" | nl

但是我很难在 PS 中复制这种单线。也许我不应该一开始就尝试。无论如何,以下是我已经走了多远:

(get-content process.csv -TotalCount 2 | select -Index 1).Replace(",", "`r`n")

它有点工作,并输出这个

“名称”“SI”“句柄”...

这不是我要找的。PS 说输出是一个大字符串对象,而不是单独的行。所以,我假设一个大对象/字符串中包含的多行需要作为单个对象通过管道传输到 '''foreach''' ,但我不知道该怎么做。无论如何,我希望输出看起来像这样......

  1. 姓名
  2. SI
  3. 把手...

有任何想法吗?提前致谢!非常恭敬。

标签: stringpowershellobjectunixtext

解决方案


这是结果的电源外壳中的一个衬里:
(ps)[1] | select *
现在为您的步骤:只需获得 10..
(ps)[0..9] | select * | export-csv -path "c:\temp\ps_$(Get-Date -f "mmddyyy").csv" -NoTypeInformation -force

$lineprops = (import-csv -path "c:\temp\ps_$(Get-Date -f "mmddyyy").csv")[1]
这是一个 ps 对象,因此您可以选择属性等。
$lineprops.name

$lineprops | select name, id , CPU

想要索引它使用数组以获得更多乐趣

$arrayofvalues = ($lineprops.PSObject.Properties).value 

$arrayofvalues[0,2,2,6+10..13+15] 

[array]::IndexOf($arrayofvalues,$arrayofvalues[10]) # kinda redundant by true
这是索引对象
$indexed=@()
$psnow=(ps)[0..9]
foreach($i in $psnow )
{ 
    $indexed += [pscustomobject]@{ Name=$i.name; ID=$i.id; index = [array]::IndexOf($psnow,$i)}
}
$indexed

将这一切压缩为一行

((ipcsv -path c:\file.csv)[1].PSObject.Properties).value  | %{$i++;[pscustomobject]@{ Value=$_; Index = $i}}
您可以将其添加到数组列表中以加快速度

推荐阅读