Это вернет прямоугольник ширины или высоты 0, если две точки находятся на линии
float x,y,h,w;
if (p1.x > p2.x) {
x = p2.x;
w = p1.x-p2.x;
} else {
x = p1.x;
w = p2.x-p1.x;
}
if (p1.y > p2.y) {
y = p2.y;
h = p1.y-p2.y;
} else {
y = p1.y;
h = p2.y-p1.y;
}
CGRect newRect = CGRectMake(x,y,w,h);
Для отдельных командлетов существует параметр -erroraction. Возможные значения: SilentlyContinue, Stop, Continue или Inquire. Вы также можете указать глобальную переменную с именем $ errorpreference для любой из этих опций.
В V1 вы можете использовать ключевое слово trap. Существует довольно хорошая, краткая статья , в которой описаны ключевые различия между ловушками и синтаксисом try / catch / finally, который был добавлен в версии 2.
Вот быстрый пример использования операторов trap, первый - для определенного типа исключения, а второй - это общая ловушка для перехвата всех ошибок
trap {"Other terminating error trapped" }
trap [System.Management.Automation.CommandNotFoundException]
{"Command error trapped"}
1/$null
Я считаю, что Posh - это все .Net. Большинство концепций, которые работают в .Net, должны работать в Posh.
Для обработки ошибок вы можете использовать Try..catch. Также возможно «перехватить» ошибки и указать свой собственный набор инструкций для выполнения при возникновении ошибки.
Я настоятельно рекомендую встроенную справку:
Get-Help about_Errors
Get-Help about_Trap