我有一个脚本执行从一个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版。
答案 0 :(得分:2)
这种情况发生在很多命令中,真的很烦人。要解决此问题,您可以尝试使用此基本示例中的try / catch:
Get-ChildItem $sourceDir -Filter $itemNum*.* | ForEach {
try {
Copy-Item -LiteralPath $sourceDir\$_ -Destination $destDir -ErrorAction Stop
}
catch {}
}