如何为PowerShell输出添加竖线分隔符?
最优实现方式推荐
嘿,这个需求其实有几种靠谱的实现路径,其中最稳妥、最优的方式是直接从PowerShell对象层面提取属性并拼接,完全避开格式化后字符串解析可能带来的空格数量不确定等问题,下面给你具体方案:
方案一:直接从进程对象生成竖线分隔输出(推荐)
利用PowerShell的Join-String cmdlet直接提取目标属性并指定分隔符,这是最可靠的方式,尤其适用于通用场景(比如属性值含空格的情况也不会出错):
Get-Process -Name explorer | Select-Object Handles, WS, CPU, Id, ProcessName | Join-String -Property Handles, WS, CPU, Id, ProcessName -Separator '|'
执行后会直接输出:2623|255336448|178.125|10080|explorer
方案二:处理已有的空格分隔字符串
如果你已经拿到了那行无表头的空格分隔输出,也可以用正则替换的方式把连续空白字符换成竖线:
# 假设你已经有了输出内容存到变量里 $rawOutput = "2623 255336448 178.125 10080 explorer" $rawOutput -replace '\s+', '|'
或者直接在原管道后面追加处理逻辑:
Get-Process -Name explorer | Select-Object Handles, WS, CPU, Id, ProcessName | Format-Table -HideTableHeaders | Out-String | ForEach-Object { $_ -replace '\s+', '|' } | Trim
为什么推荐第一种?因为它直接操作进程对象的属性值,不需要依赖格式化后的文本格式,避免了因列宽变化导致空格数量不一致的问题,通用性和稳定性都更强。
内容的提问来源于stack exchange,提问作者user3342256
相关产品推荐
相关产品推荐

