我在网络共享上有一个文件夹 - 称之为\ Server \ Backup \ November.25.2013.backup。 此文件夹包含子文件夹\ test1,\ test2,\ test3。
示例:
\\Server\Backup\November.25.2013.backup\
.\Test1
.\Test2
.\Test3
我需要将November.25.2013.backup的子文件夹复制到c:\ Test。 此功能仅用于复制指定日期的备份文件夹内容(在本例中为昨天的备份)。我正在使用此脚本来恢复最后一天的备份减去名称(November.25.2013.backup)。以下是我一直在尝试使用的内容:
Get-ChildItem -Path \\Server\Backup -r | Where-Object {$_.LastWriteTime -gt (Get-Date).Date}
% { Copy-Item -Path $_.FullName -Destination C:\Test -WhatIf }
但是我收到了错误
Copy-Item : Cannot bind argument to parameter 'Path' because it is null.
At line:3 char:20
+ % { Copy-Item -Path <<<< $_.fullname -destination C:\Test -whatif }
+ CategoryInfo : InvalidData: (:) [Copy-Item], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.CopyItemCommand
请理解我仍然是使用Powershell脚本编写的新手,我不知道如何解决这个问题。我很感激任何建议。
我的目标是从备份文件夹中恢复文件夹。谢谢。
答案 0 :(得分:3)
您在第一行末尾缺少一个管道。
此外,如果您尝试获取上次写入时间为昨天的文件夹,则该文件夹将小于当前日期的-lt
Get-ChildItem -Path \\Server\Backup -r | Where-object {$_.lastwritetime -lt (get-date).date} |
% { Copy-Item -Path $_.fullname -destination C:\Test -whatif }
但如果每天都有一个文件夹,那么这可能会比你想要的更多。如果你只想要昨天写的东西,请使用:
Get-ChildItem -Path \\Server\Backup -r | Where-object {($_.lastwritetime.date -eq ((get-date).adddays(-1)).date)} |
% { Copy-Item -Path $_.fullname -destination C:\Test -whatif }
评论示例:
Get-ChildItem -Path c:\test -r | Where-object {$_.PSIscontainer -and (($_.lastwritetime.date -eq ((get-date).adddays(-1)).date))} |
% { Copy-Item $_.fullName -destination C:\Testoutput\ -recurse}
答案 1 :(得分:2)
(也作为答案添加。)
在粘贴的代码中,Where-Object和%之间没有管道。
简单解决方案:在第一行的末尾添加|
:
Get-ChildItem -Path \\Server\Backup -r | ? {$_.lastwritetime -gt (get-date).date} |
% { Copy-Item -Path $_.fullname -destination C:\Test -whatif }