6

调用 copy-item 时,是否有一种简单的方法可以验证所有文件是否已正确复制?我考虑过对所有文件使用校验和,但我想powershell(v2)已经有了一些东西,但我找不到它。

4

5 回答 5

5

我知道这是一个旧线程,但我想我会发布这个以防其他人正在阅读它...... /v 开关验证数据!它只是确保副本是可读的。有关详细信息,请参阅http://support.microsoft.com/kb/126457

于 2010-07-30T14:23:21.347 回答
2

只是一个更新,Powershell v4 包括Get-FileHash可用于验证文件是否已成功复制的更新。如果哈希值相同,则文件已复制成功。链接到TechNet 库

我用这个答案来提出以下问题。

(Get-ChildItem -file -path c:\files -Recurse).FullName | foreach {get-filehash $_ -Algorithm md5} 也可以通过管道传输到 Export-CSV,以轻松直观地比较文件哈希。

于 2015-04-14T18:35:30.877 回答
2

不,没有,这就是原因。Copy-Item 是适用于所有命名空间提供程序的通用 cmdlet。因此,被复制的项目可能是文件、注册表设置或 IIS 配置部分等。验证文件副本与验证注册表设置的副本有很大不同。

更新:正如@Dave_S 所指出的,XCOPY 命令的验证开关不是您正在寻找的那种验证。

如果要复制文本文件,可以使用 PowerShellCompare-Object命令行开关。

如果要复制二进制文件,可以使用带有/b开关的系统fc.exe命令。

于 2010-01-18T18:20:09.630 回答
0

My current favourite solution is xcopy in combination with a hashdeep audit. Can be packed together in a small BAT-file.

于 2012-01-09T14:30:01.437 回答
0

你可以使用 -verbose

Copy-Item -Path $Source -Destination $Destination -Recurse -Force -verbose

于 2021-06-21T12:06:04.540 回答