Move-Item:输入对象不能绑定到命令的任何参数,因为命令不接受管道输入?

时间:2017-03-16 14:17:31

标签: powershell

我想简单地将30天之后的文件从“x”移动到“y” 但是我得到以下错误.. Move-Item:输入对象不能绑定到命令的任何参数,因为命令不接受管道输入或输入及其属性与任何接受管道输入的参数不匹配

思想脚本很简单?有什么建议吗?

# Move All Files From One Location To New Location Older than 30 day(s)
$LocationX = "\\Server\LogFiles\"
$LocationY = "\\BackupServer\LogFiles\"
$Daysback = "-30"
$CurrentDate = Get-Date
$DatetoMove = $CurrentDate.AddDays($Daysback)
Get-ChildItem $LocationX | Where-Object { $_.LastWriteTime -lt $DatetoMove } | Move-Item $LocationX $LocationY -Force

1 个答案:

答案 0 :(得分:1)

Move-Item on TechNet

查看示例4
PS C:\> Get-ChildItem -Path ".\*.txt" -Recurse | Move-Item -Destination "C:\TextFiles"

您将看到目标是指定的路径参数。请注意,源路径被省略,因为在管道中传递的fileinfo对象已经具有该信息。

在您的管道中,您需要填写将通过管道匹配的两个参数。因此,没有其他地方可以填补因此你得到的错误的阶梯一半。

  

输入及其属性与管道输入的任何参数都不匹配。

因此,使用您的代码和帮助中的逻辑,您应该能够做到这一点,并获得您期望的结果。

Get-ChildItem $LocationX | 
    Where-Object { $_.LastWriteTime -lt $DatetoMove } | 
    Move-Item -Destination $LocationY -Force