Powershell中的多个管道

时间:2015-09-29 06:52:52

标签: powershell

如何在同一个项目上处理多个命令;以这个例子为例,我想显示两个文件名和最后一个写日期,但只显示文件名:

PS C:\Users\demo> ls *.zip | % { Write-Host $_.FullName }  | % { Write-Host $_.LastTimeWrite }
C:\Users\demo\archive.zip

1 个答案:

答案 0 :(得分:5)

首先,FileInfo属性称为LastWriteTime - 而不是LastTimeWrite

您可以使用格式字符串,例如:

ls *.zip | % { Write-Host ("{0} {1}" -f $_.FullName, $_.LastWriteTime) }

或者您使用分号分隔命令:

ls *.zip | % { Write-Host $_.FullName; Write-Host $_.LastWriteTime }

如果是Write-Host,您也可以写

ls *.zip | % { Write-Host $_.FullName $_.LastWriteTime }

您的管道无法按预期工作的原因有两方面:

  • Write-Host将输出写入主机环境(即控制台),因此没有什么可以进入下一个管道步骤。如果您需要进一步处理结果,请使用Write-OutputSelect-Object代替Write-Host
  • 即使您没有将输出写入主机环境,管道中的下一步也不会与当前步骤相同,因为您正在转换{{ 1}}在当前步骤中将对象转换为字符串。