将分隔符插入 PowerShell 输出



Get-Process -Name explorer | select Handles,WS,CPU,Id,ProcessName | ft -HideTableHeaders的结果返回以下输出:

2623 255336448 178.125 10080 explorer 

为了将此数据引入第三方系统,我需要通过管道分隔结果:

2623|255336448|178.125|10080|explorer 

实现这一目标的最佳方法是什么?

怎么样:

(Get-Process explorer |
Select-Object Handles,Ws,CPU,ID,ProcessName |
ConvertTo-Csv -Delimiter '|' -NoTypeInformation |
Select-Object -Skip 1) -replace '"',''

仅使用ft(Format-Table(以便在PowerShell控制台中轻松查看(它不适合将数据发送到其他应用程序,因为那样您必须撤消格式 - 因此首先不要格式化(。

为了提供一个更简洁(而且速度更快(的替代方案来替代比尔·斯图尔特的有用答案:

Get-Process -Name explorer | ForEach-Object { 
$(foreach ($prop in 'Handles', 'WS', 'CPU', 'Id', 'ProcessName') { $_.$prop }) -join '|'
}
  • foreach ($prop in 'Handles', 'WS', 'CPU', 'Id', 'ProcessName') { $_.$prop }输出每个进程对象($_,由ForEach-Objectcmdlet提供的输入对象(的所有感兴趣属性。

  • $(...)将它们收集为[object[]]数组,这...

  • 。使该数组能够用作-join运算符的 LHS,以便将数组的元素与|作为分隔符连接起来,以形成单个字符串。

总体而言,您可以根据需要为每个输入对象获得一个字符串。

最新更新