从批处理文件切换到powershell脚本的原因是为了改进进程的错误检查。用于复制的cmdlet在这方面有优势吗?
如果已经存在使用xcopy逐个按文件名复制文件的批处理文件,那么将语法转换为copy-item有什么好处吗?
使用robocopy、xcopy和copy-item (相互比较)的优点是什么?例如,当通过可靠的网络处理大量小文件时,robocopy是否具有优势。如果要在数百台计算机上同时运行此脚本以将数百个文件复制到每台计算机上,是否会影响决策?是否应该主要关注文件的权限?
发布于 2014-12-06 05:54:43
它的主要优点是,您可以通过管道而不是字符串或文件将对象发送到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的管道是很常见的,我个人倾向于经常这样做,因为Remove-Item的-Recurse -Include错误。
您还可以获得PowerShell的错误捕获、-Passthru、-WhatIf、-UseTransaction等特殊参数,以及所有常见参数。Copy-Item -Recurse可以复制xcopy的一些树复制功能,但它非常简单。
现在,如果您需要维护ACL、所有权、审计等,那么xcopy或robocopy可能会更容易,因为这些功能都是内置的。我不确定Copy-Item如何处理将加密文件复制到非加密位置(xcopy可以做到这一点),而且我不相信Copy-Item支持直接管理存档属性。
如果这是你想要的速度,那么我怀疑xcopy和robocopy会胜出。托管代码通常具有较高的开销。Xcopy和robocopy还可以更好地控制它们与网络的配合程度。
https://stackoverflow.com/questions/27324725
复制相似问题