Обработка исключений в Powershell 1.0 - PullRequest
1 голос
/ 06 августа 2010

Я использую следующий код для загрузки файла с помощью PowerShell 1.0. Как я могу узнать, была ли загрузка успешно завершена или произошла ошибка? Мне нужно удалить файл, если загрузка прошла успешно.

Что я пробовал:
1. оговорка о ловушке. Не могу заставить этот работать.
2. Проверка возвращаемого значения $ webclient.UploadFile - похоже, это всегда пустая строка, успешно или нет

$File = "D:\Dev\somefilename.zip" $ftp = "<a href="ftp://username:password@example.com/pub/incoming/somefilename.zip" rel="nofollow noreferrer">ftp://username:password@example.com/pub/incoming/somefilename.zip</a>"</p> <p>"ftp url: $ftp"</p> <p>$webclient = New-Object System.Net.WebClient $uri = New-Object System.Uri($ftp)</p> <p>"Uploading $File..."</p> <p>$webclient.UploadFile($uri, $File)

Ответы [ 2 ]

3 голосов
/ 06 августа 2010

Опустите ловушку в новую область видимости, чтобы перехватить исключение, генерируемое при загрузке, например:

$succeeded = $true;
& {
    trap { $script:succeeded = $false; continue }
    $webclient.UploadFile($uri, $File)
}
if ($succeeded) { 'Yay!' } else { 'Doh!' }

Вы также можете попытаться поймать определенное исключение, например:

trap [System.Net.WebException] { ... }
0 голосов
/ 06 августа 2010

Метод UploadFile является синхронным. Если он завершается без исключения, вы добились успеха. Вы должны получить траппируемую исключительную ситуацию WebException в случае сбоя.

http://msdn.microsoft.com/en-us/library/36s52zhs.aspx

Я опущу подробности о перехвате ошибок, так как, похоже, вы уже знакомы с ним.

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