ВОЗМОЖНОЕ РЕШЕНИЕ:
Я обнаружил, что с SCOM 2007 R2 (не проверял это на SCOM 2012), powershell не может импортировать модуль FailoverClusters.Я попробовал предложение пропустить ошибку.Пропуск работает в самый первый раз, когда агент выполняет скрипт.После этого при последующем выполнении сценария не будет доступен командлет Get-Cluster.Каждый раз, когда вы перезапускаете агент, он пропускает ошибку, и командлет становится доступным, но снова при последующих выполнениях не удается загрузить командлет.Повышенные разрешения и неограниченное выполнение скриптов не помогли решить проблему.
Регулярный перезапуск агента - вот такая кувалда.Я не развлекал его.
Однако я обнаружил, что, если бы я использовал легкий скрипт, который порождает новый экземпляр powershell и выполняет мой основной код (файл сохраняется на диске или генерирует скрипт на диске на лету)), свежий экземпляр powershell успешно загружал модуль каждый раз, и командлет всегда был доступен.
Я знаю, что существуют опасения, что порождение одного экземпляра из другого (например, vbscript spawing powershell) имеет проблемы с perf.Но в моем случае я смог заставить агента вызвать мою оболочку powershell, сгенерировать 500-строчный скрипт на лету (используя streamwriter для perf), а затем порождать его в новой оболочке powershell.Все это выполнялось примерно за 6 секунд, включая запрос Get-ClusterResources.
Я предполагаю, что это ошибка в агенте SCOM ...