主要优点是您可以Copy-Item
通过管道而不是字符串或文件规范发送对象。所以你可以这样做:
Get-ChildItem '\\fileserver\photos\*.jpeg' -File | `
Where-Object { ($_.LastAccessTime -ge (Get-Date).AddDays(-1)) -and ($_.Length -le 500000) } | `
Copy-Item -Destination '\\webserver\photos\'
这是一个糟糕的例子(你可以用 来做到这一点Copy-Item -Filter
),但它很容易即时提出。在处理文件Get-ChildItem
时-Recurse -Include
以Remove-Item
.
您还可以获得 PowerShell 的错误捕获、特殊参数(如-Passthru
、-WhatIf
、-UseTransaction
)以及所有常用参数。 Copy-Item -Recurse
可以复制 xcopy 的一些树复制能力,但它非常简单。
现在,如果您需要维护 ACL、所有权、审计等,那么xcopy
或者robocopy
可能会更容易,因为该功能是内置的。我不确定如何Copy-Item
处理将加密文件复制到非加密位置(xcopy有一些能力做到这一点),我不相信Copy-Item
支持直接管理存档属性。
如果您正在寻找速度,那么我怀疑 xcopy 和 robocopy 会胜出。托管代码通常具有更高的开销。Xcopy 和 robocopy 还可以更好地控制它们与网络的工作情况。