在powershell中验证文件副本

时间:2010-01-17 17:23:05

标签: powershell-v2.0

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

5 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:2)

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

更新: 正如@Dave_S所指出的,XCOPY命令的验证开关不是您要查找的验证类型。

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

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

答案 2 :(得分:0)

我目前最喜欢的解决方案是xcopy与hashdeep审计相结合。可以在一个小的BAT文件中打包在一起。

答案 3 :(得分:0)

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

我使用this answer来提供以下内容。

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

答案 4 :(得分:0)

你可以使用 -verbose

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