使用PowerShell比较文件夹和将增量内容写入第三个文件夹

时间:2012-03-19 10:18:40

标签: powershell

你好再次与PowerShell争吵。

我有两个数据文件夹,必须与彼此进行比较:DirA和DirB。应将对DirA进行的所有更改(添加/删除文件夹或数据)复制到文件夹Delta。文件夹Delta将内容复制到DirB。我需要这样做才能在DirB所在的断开连接的网络中上传数据。我的问题是数据似乎没有可靠地复制到Delta和Delta到DirB。要同步的数据是几GB的

这是我的代码。任何帮助或朝着正确的方向前进都值得赞赏!

PS:我在Comparing folders and content with PowerShell上看到了示例,但是当我运行我的代码时,我看到很多运行时错误。我不能坚持它出错的地方。

<# This script is being used to track changes between DirA and DirB. Changes will be copied to Delta folder and from here copied backwards to DirB to be in sync with DirA. Delta folder will be copied to an USB drive to be connected in disconnected network
#>


$src  = Get-ChildItem -Path "C:\DirA\" -Recurse 
$dst  = Get-ChildItem -Path "D:\DirB" -Recurse

Do a compare of scr and dst and copy the changes to the folder D:\Delta Compare-Object -ReferenceObject $src -DifferenceObject $dst
-Property Name, Length  | Where-Object {$_.SideIndicator -eq "<="} | ForEach-Object {
        Copy-Item C:\DirA\$($_.name) -Destination "D:\Delta\WsusContent" -Recurse -force
        }       

Copy-Item D:\Delta\* D:\DirB\ -Recurse -Force

1 个答案:

答案 0 :(得分:0)

我知道这与powershell的管道概念背道而驰,但在构建复杂的管道时,我将使用内部对象来确保每个阶段都能达到预期目标。

一旦运行良好,您可以转换回典型的流水线......