【发布时间】:2018-11-20 15:44:55
【问题描述】:
我正在尝试写入两个管道内的输出(回显)以跟踪我正在做的事情,但我有一个错误。
Get-ChildItem $path -Recurse |
Where-Object { $_.Name -match '.+?\.log\.(\d{4})-(\d{2})-(\d{2})$' -and $_.LastWriteTime -lt $deleteDate } |
Write-Output "deleting file" -PassThru |
Remove-Item
但我有这个错误:
Write-Output :输入对象不能绑定到命令的任何参数,因为命令不接受管道输入,或者输入及其属性不匹配任何接受管道输入的参数。
我也在 Foreach-Object 函数中测试过
Get-ChildItem $path -Recurse |
Where-Object { $_.Name -match '.+?\.log\.(\d{4})-(\d{2})-(\d{2})$' -and $_.LastWriteTime -lt $deleteDate } |
Foreach-Object {
echo "deleting $($_.Name)";
Remove-Item($_);
}
但是这里没有打印在控制台中(但是脚本完成没有错误并删除了我想要的文件)
那么如何在两个管道中打印到输出?
谢谢
【问题讨论】:
-
这可能意味着您的
where中的条件不适用于任何文件? -
@marsze 条件正确。当我删除“写入输出管道”时脚本运行良好
-
在第二个脚本中使用
$_ | Remove-Item或在第一个插入| Tee-Object -Variable Deleted |而不是Write-Output 和后来的输出$Deleted
标签: powershell pipe echo