Обычный шаблон, который я вижу в примерах сценариев PowerShell, выглядит примерно так:
If ($object.property -ne $true) {
$object.property = $true
}
Но это не решает ситуацию, когда конкретный экземпляр $object не включает свойство, и в этом случае произойдет ошибка. Я столкнулся с этим специально при переборе сетевых адаптеров для включения WOL, а адаптер его не поддерживает. В любом случае одним из подходов было бы использование Try/Catch, но я считаю, что исключений следует избегать, если есть способ проверить вещи заранее. Итак, правильно ли я считаю, что Try/Catch должен быть последним средством? Или в PowerShell нормально использовать Try/Catch в качестве основного метода устранения ошибок? И если try/Catch не лучший ответ, как можно проверить, есть ли у конкретного объекта свойство, чтобы просто пропустить присваивание, если это не так? То немногое, что я нашел, было действительно уродливым/грязным подходом и/или попыткой/поймать во вспомогательной функции, так что вы просто не видите этого в большей части своего кода. Ни один из них по своей сути не лучше, кроме вспомогательной функции, обеспечивающей читабельность кода.
prop.prop.prop
Я думаю, что у него должна быть как минимум версия 3.0. Однако его решение все еще работает. Рады, что смогли помочь. 15.04.2015