Ошибка копирования элемента с Literalpath или намеренно? - PullRequest
0 голосов
/ 24 января 2019

Рассмотрим следующий действительно простой код:

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

Это будет хорошо работать, чтобы перехватить ошибку для несуществующего файла souce.Однако следующее не будет - нет сгенерированной ошибки.

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 голосов
/ 24 января 2019

Я думаю, вы нашли ошибку с Copy-Item в Windows PowerShell. Кажется, включение символа ? в любом месте ввода для -Path или -LiteralPath предотвращает отлов ошибки для несуществующего пути.

Ошибка, похоже, исправлена ​​в PowerShell Core, где приведенный выше код приводит к исключению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...