2010-01-17 61 views
4

有沒有一種簡單的方法可以在調用副本項目時驗證所有文件是否被正確複製?我想過在所有文件上使用校驗和,但我會想象PowerShell(v2)已經有了一些東西,我找不到它。在PowerShell中驗證文件副本

回答

2

不,沒有,這就是爲什麼。 Copy-Item是一個適用於所有名稱空間提供程序的通用cmdlet。因此,要複製的項目可能是文件,註冊表設置或IIS配置部分等。驗證文件副本與驗證註冊表設置副本有很大不同。

更新: 正如@Dave_S指出的那樣,XCOPY命令的驗證切換不是您正在查找的驗證類型。

如果您要複製文本文件,您可以使用PowerShell Compare-Object commandlet。

如果您正在複製二進制文件,您可以使用系統fc.exe命令與/b開關。

+4

http://support.microsoft.com/kb/126457在其他(非)答案中指出。 – Joey 2011-07-13 08:43:48

5

我知道這是一個古老的線程,但我想我會張貼這只是爲了防止其他人正在讀它.../v開關不是驗證數據!它只是確保副本可讀。詳情請參閱http://support.microsoft.com/kb/126457

+1

+1我發現這是一個重要的信息! – psj 2012-01-09 14:26:54

0

我目前最喜歡的解決方案是xcopy與hashdeep審計相結合。可以裝在一個小的BAT文件中。

0

只是一個更新,Powershell v4包括Get-FileHash可用於驗證文件已成功複製。如果散列相同,則文件已成功複製。鏈接到TechNet Library

我用this answer來想出以下幾點。

(Get-ChildItem -file -path c:\files -Recurse).FullName | foreach {get-filehash $_ -Algorithm md5}也可以通過管道傳輸到Export-CSV中,以便輕鬆直觀地比較文件哈希值。

+2

Downvote for拼寫錯誤「算法」,並加上5分鐘搞清楚PowerShell出了什麼問題。 :P – 2017-04-26 09:01:30

+0

回到評論,至少我使用完整的參數名稱!而不是簡寫'-Alg' – user4317867 2017-11-10 23:33:17