PowerShell的复制项目失败默默

我有一个在Windows Server 2008 R2 64位上运行的PowerShell 2.0脚本,它将一些Hyper-V .vhd文件作为“备份解决scheme”复制到另一台服务器上。

该脚本获取.vhd的列表,然后遍历该列表以使用Copy-Item复制它们。 它还将一些日志logging信息写入文件。 这些文件被复制到另一个服务器(Windows Server 2003 Sp2)到压缩为NTFS压缩的目录中。

其中一个文件不被复制。 它相当大〜68Gb。 其他的是20Gb或更less。 更奇怪的是,在复制过程中,文件出现在目标服务器上,生成的日志文件似乎表明文件被复制,因为日志文件条目的时间不同。

我没有看到日志文件上的错误信息,也没有发现任何一台机器的事件日志。

这是复制的代码。

Get-ChildItem $VMSource *.vhd -Recurse | foreach-object { $time = Get-Date -format HH.mm.ss Add-Content $logFileName "$time : File Copy ($_) started" $fullname = $_.FullName Add-Content $logFileName "$time : Copying $fullname to $VMDestination" Copy-Item $fullname $VMDestination -Force -ErrorAction SilentlyContinue -ErrorVariable errors foreach($error in $errors) { if ($error.Exception -ne $null) { Add-Content $logFileName "'tERROR COPYING FILE : $($error.Exception)" } } $time = Get-Date -format HH.mm.ss Add-Content $logFileName "$time : File Copy ($_) finished" } 

我只能认为有一些问题,复制一个文件,大的压缩目录也许? 有任何想法吗?

问题一般是该文件的副本。 我试图在资源pipe理器中复制文件,大约一个小时后失败,说明文件的一部分被另一个进程locking。

我最终修改脚本来压缩文件,然后将其移到目的地。 脚本现在运行成功,虽然花费了更长的时间。

欢呼任何答案。

您需要检查-errorvariable选项。 如果您使用+错误而不是 – 错误,则可能检索到其他错误。