错误复制项目与Literalpath或预期?

时间:2019-01-24 13:45:28

标签: powershell

考虑以下非常简单的代码:

Try {
    Copy-Item -Path '\\server\g$\thisfolder\thisfiledoesntexist.ini' -Destination 'c:\temp' -ErrorAction Stop
}
Catch {
    "Ran into an issue: $_"
}

这可以很好地捕获源文件不存在的错误。但是以下内容将不会发生-没有错误生成。

Try {
    Copy-Item -LiteralPath '\\?\UNC\server\g$\thisfolder\thisfiledoesntexist.ini' -Destination 'c:\temp' -ErrorAction Stop
}
Catch {
    "Ran into an issue: $_"
}

但是...这将捕获错误

Try {
    Get-ChildItem -LiteralPath '\\?\UNC\server\g$\thisfolder\thisfiledoesntexist.ini' -ErrorAction Stop | Copy-Item
}
Catch {
    "Ran into an issue: $_"
}

这是我第一次有机会使用文字路径-这种行为是有意/无意的吗?

1 个答案:

答案 0 :(得分:1)

我认为您在Windows PowerShell下发现了Copy-Item的错误。似乎在输入?-Path的任何位置都包含-LiteralPath字符可以防止由于路径不存在而导致错误被捕获。

该错误似乎已在PowerShell Core上修复,在上面的代码中确实会导致引发异常。