首页 > 解决方案 > 将字符添加到每行的 Out-File 内容?

问题描述

有没有办法使用 PowerShell Out-File 为插入到文件中的每一行添加 * 在 Out-File 中每个文本的开头和结尾?

示例:获取进程 | 输出文件 -FilePath .\Process.txt

Test
Test1

示例 Process.txt 应包含:

*Test*
*Test1*

标签: powershell

解决方案


如果您有一个集合,它是大多数命令的输出,您可以遍历每个元素并格式化输出字符串。下面的示例使用 ( -f) 格式运算符来构建字符串。

$collection = @('test','test1','test2')
foreach ($entry in $collection) {
    "*{0}*" -f $entry | Out-File .\Process.txt -Append
}

上面的例子很简单。但是,当从命令输​​出时,您通常会得到一个对象。您需要调整它以选择您关心的对象属性。如果我们将上面的示例改编为Get-Process,您可以执行以下操作:

foreach ($name in (Get-Process).Name) {
    "*{0}*" -f $name | Out-File .\Process.txt -Append
}

一个概念上相似但不太冗长的选项,带有别名,只向输出文件写入一次:

Get-Process |% {"*$($_.Name)*"} | Out-File .\Process.txt

推荐阅读