在 PowerShell 中使用 Get-ChildItem 复制项目

use*_*554 2 powershell

我正在尝试使用 PowerShell 将大量文件从 Windows 系统复制到 Unix 共享。我似乎能够到目前为止,但不是整个解决方案。

只要我不介意它们存储在哪里,我似乎就可以复制这些文件,因为它会丢失所有文件夹结构。我尝试过这里和网上其他地方发布的各种方法,但均无济于事。

代码:

gci -path "e:\company folders\\*" | Where-Object {$_.LastAccessTime -le (Get-Date).addyears(-2)} | Copy-Item -destination "\\\networkfolder\archive\company folders\"
Run Code Online (Sandbox Code Playgroud)

我尝试了此脚本的几种变体,包括在 -path 之后和 -destination 之后使用 -recurse

最大的成功来自于

gci -path "e:\company folders\*" | Where-Object {$_.lastaccesstime -le (Get-Date).addyears(-2)} | Copy-Item -destination "\\\networkshare\archive\company folder\" -recurse -container
Run Code Online (Sandbox Code Playgroud)

但这只复制了 43 个文件夹中的 5 个。

我究竟做错了什么?

Ans*_*ers 5

如果要复制文件夹结构,请使用robocopy(Windows 相当于):rsync

$src = ':\company folders'
$dst = '\\networkfolder\archive\company folders'
$age = (Get-Date).AddYears(-2).ToString('yyyyMMdd')

& robocopy "$src" "$dst" /s /maxlad:$age
Run Code Online (Sandbox Code Playgroud)

如果您还想包含空子文件夹,请替换/s为。/e

  • 哇,为什么我这么着迷于让 powershell copy-item 来运行这个任务?使用 PS 设置变量并运行 robocopy,它就起作用了......谢谢 Ansgar! (3认同)