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