2011-10-08 48 views
2

如何格式化Get-ChildItem输出的每一行?举例来说,我想用我自己的字符串包围它,得到下面的输出(普通 - 没有桌子或其他):在powershell中格式化每行命令输出

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" 

回答

4

你需要ForEach-Object这里:

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

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

短:

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

(使用别名,字符串变量插值而事实上,串正好落在了管道到主机)

+0

谢谢,它的工作。我喜欢第二种形式 –