Powershell正在被另一个进程使用'使用silentntlyContinue显示错误

时间:2017-11-01 13:37:40

标签: file powershell

我有一个脚本执行从一个Windows共享到另一个Windows共享的副本项,偶尔会显示错误“无法访问该文件,因为它正被另一个进程使用”#。执行此操作的代码如下所示,并且已包含-ErrorAction SilentlyContinue,但仍然会在控制台上显示错误:

Get-ChildItem $sourceDir -Filter $itemNum*.* | ForEach {    
    Copy-Item -LiteralPath $sourceDir\$_ -Destination $destDir -ErrorAction SilentlyContinue
}

我有额外的代码可以处理无法复制的项目,这种代码完美无缺,我只是不想在控制台上显示红色错误消息。作为' -errorAction SilentlyContinue'似乎不起作用,还有另一种方法吗?

PS。始终导致问题的文件类型是.msg文件。这些都有问题的原因是什么?我总是假设它是因为它们嵌入了附件和文件等,并且可能会因为GCI而被访问AV扫描?

Powershell是在Windows Server 2008上运行的3.0版。

1 个答案:

答案 0 :(得分:2)

这种情况发生在很多命令中,真的很烦人。要解决此问题,您可以尝试使用此基本示例中的try / catch:

Get-ChildItem $sourceDir -Filter $itemNum*.* | ForEach {    
   try { 
        Copy-Item -LiteralPath $sourceDir\$_ -Destination $destDir -ErrorAction Stop
   } 
   catch {}
}