PowerShell - обработка исключений - PullRequest
7 голосов
/ 21 марта 2011

Я ищу лучший способ обработки исключений в PowerShell. В следующем примере я хочу создать новую сеть SharePoint и удалить старую сеть SharePoint. Когда происходит сбой New-SPWeb, необходимо, чтобы скрипт завершился. Я думаю, что try / catch - лучший способ, потому что оператор if проверяет, существует ли $ a Есть ли другие варианты обработки исключений?

Обработка исключений с помощью оператора if:

$a = New-SPWeb http://newspweb
if($a -eq $null)
{
Write-Error "Error!"
Exit
}
Write-Host "No Error!"
Remove-SPWeb http://oldspweb

С пробой / выловом:

try
{
$a = New-SPWeb http://newspweb
}
catch
{
Write-Error "Error!"
Exit
}
Write-Host "No Error!"
Remove-SPWeb http://oldspweb

Ответы [ 2 ]

10 голосов
/ 21 марта 2011

Try / catch действительно для обработки завершающих ошибок и продолжения.Звучит так, будто вы хотите остановиться на нескончаемой ошибке.Если это так, используйте параметр ErrorAction для New-SPWeb и установите для него значение Stop, например:

$a = New-SPWeb http://newspweb -ErrorAction Stop

Это преобразует непрекращающуюся ошибку в завершающую ошибку.

5 голосов
/ 21 марта 2011

Попробуйте поймать, конечно, правильный путь.Но он будет ловить только завершающие ошибки.Таким образом, если New-SPWeb не выдаст завершающую ошибку, вы никогда не сможете ее перехватить.Я предполагаю, что это приводит к завершающей ошибке.

Кстати, если вам нужны все подробности об ошибке, выведите $_ в catch {}. Она будет содержать всю информацию об ошибке.

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