如何格式化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"
答案 0 :(得分:4)
您需要ForEach-Object
:
Get-ChildItem | ForEach-Object { Write-Host My string $_.FullName my string2 }
否则没有$_
。作为一般规则,$_
仅存在于脚本块中,而不是直接存在于管道中。此外Write-Host
对多个参数进行操作,并且您无法在命令模式下连接字符串,因此您需要添加括号以在表达式模式下获取一个参数,或者省略引号和+
(就像我在这里所做的那样)
更短的:
gci | % { "My string $($_.FullName) my string2" }
(使用别名,字符串变量插值以及字符串刚刚脱离管道到主机的事实)