-ErrorAction Стоп не работает в Copy-Item - PullRequest
6 голосов
/ 20 февраля 2012

Простой скрипт:

"test" | Out-File "C:\existing_file.txt"
$ErrorActionPreference = "Continue"
Copy-Item "C:\existing_file.txt" "C:\NonExistingDir\file.txt" -ErrorAction Stop
"hello" | Out-Host

У меня есть такой вывод:

Copy-Item : Could not find a part of the path "C:\NonExistingDir\file.txt".
C:\Users\ESavin\AppData\Local\Temp\d3d410e0-79b3-4736-b7e7-5aba1ab11a12.ps1:1 знак:10
+ Copy-Item <<<<  "C:\existing_file.txt" "C:\NonExistingDir\file.txt" -ErrorAction Stop
    + CategoryInfo          : NotSpecified: (:) [Copy-Item], DirectoryNotFoundException
    + FullyQualifiedErrorId : System.IO.DirectoryNotFoundException,Microsoft.PowerShell.Commands.CopyItemCommand

hello

Почему я получаю "привет" на выходе ?? -ErrorAction Stop не работает ??

Обновление:

этот код:

"test" | Out-File "C:\existing_file.txt"
$ErrorActionPreference = "Stop"
Copy-Item "C:\existing_file.txt" "C:\NonExistingDir\file.txt"
"hello" | Out-Host

работал как положено. на выходе нет "привет".

Copy-Item игнорирует -ErrorAction и использует только $ ErrorActionPreference ??

Ответы [ 3 ]

5 голосов
/ 20 февраля 2012

Как указано в справке, параметр ErrorAction не влияет на устранение ошибок, которые у вас есть.

    The ErrorAction parameter has no effect on terminating errors (such as
    missing data, parameters that are not valid, or insufficient 
    permissions) that prevent a command from completing successfully.

Источник: Get-Help about_commonparameters и http://technet.microsoft.com/en-us/library/dd315352.aspx

0 голосов
/ 20 февраля 2012

Вы должны запустить:

Copy-Item "C:\existing_file.txt" "C:\NonExistingDir\file.txt" -ErrorAction Continue
"hello" | Out-Host

или установите $ErrorActionPreference="continue" и запустите

Copy-Item "C:\existing_file.txt" "C:\NonExistingDir\file.txt"
"hello" | Out-Host

Это единственный способ получить результат, который вы показываете. Поэтому убедитесь, что вы делаете то, на что вы претендуете.

0 голосов
/ 20 февраля 2012

Странно. Я скопировал две строки в скрипт, запустил его, и все работает нормально: я не вижу «привет». Ваша "-ErrorAction" должна иметь приоритет над любой $ ErrorActionPreference, которую вы установили бы на уровне сеанса.

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