在powershell中格式化每行命令输出

时间:2011-10-08 15:04:40

标签: powershell

如何格式化Get-ChildItem输出的每一行?例如,我想用自己的字符串包围它,以获得以下输出(普通 - 没有表格或其他):

My string: C:\File.txt my string2
My string: C:\Program Files my string2
My string: C:\Windows my string2

以下无效:

Get-ChildItem | Write-Host "My string " + $_ + " my string2"

1 个答案:

答案 0 :(得分:4)

您需要ForEach-Object

Get-ChildItem | ForEach-Object { Write-Host My string $_.FullName my string2 }

否则没有$_。作为一般规则,$_仅存在于脚本块中,而不是直接存在于管道中。此外Write-Host对多个参数进行操作,并且您无法在命令模式下连接字符串,因此您需要添加括号以在表达式模式下获取一个参数,或者省略引号和+(就像我在这里所做的那样)

更短的:

gci | % { "My string $($_.FullName) my string2" }

(使用别名,字符串变量插值以及字符串刚刚脱离管道到主机的事实)