如何处理同一项目的多个命令;以这个例子为例,我想同时显示文件名和上次写入日期,但只显示文件名:
PS C:\Users\demo> ls *.zip | % { Write-Host $_.FullName } | % { Write-Host $_.LastTimeWrite }
C:\Users\demo\archive.zip
最佳答案
首先, FileInfo
属性被称为 LastWriteTime
- 而不是 LastTimeWrite
。
您可以使用 格式字符串 ,例如:
ls *.zip | % { Write-Host ("{0} {1}" -f $_.FullName, $_.LastWriteTime) }
或者您使用 分号 来分隔命令:
ls *.zip | % { Write-Host $_.FullName; Write-Host $_.LastWriteTime }
在写主机的情况下,你也可以写
ls *.zip | % { Write-Host $_.FullName $_.LastWriteTime }
您的管道无法按预期工作的原因有两个:
Write-Host
将输出写入主机环境(即控制台),因此没有任何东西可以进入下一个管道步骤。如果需要进一步处理结果,请使用 Write-Output
或 Select-Object
而不是 Write-Host
。 FileInfo
对象转换为字符串。 关于powershell - Powershell 中的多个管道,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32837486/