PowerShell на SCOM не может импортировать модуль - PullRequest
4 голосов
/ 20 мая 2011

У меня есть проблема, которую я не могу решить без помощи) У меня есть SCOM на первом ПК, и у меня есть агент SCOM на втором. Когда мой класс обнаруживается на ПК-агенте, он должен запустить скрипт PowerShell. Этот скрипт содержит команду:

FailoverClusters модуля импорта

но эта команда завершается ошибкой:

Произошла следующая ошибка при загрузке файла данных расширенного типа: Microsoft.PowerShell, C: \ Windows \ system32 \ WindowsPowerShell \ v1.0 \ Modules \ FailoverClusters \ FailoverClusters.Types.ps1xml: файл пропущен, поскольку он уже присутствовал в Microsoft.PowerShell.

Я не знаю, что делать.

Ответы [ 3 ]

3 голосов
/ 20 мая 2011

Как указывает в этом блоге , вы можете игнорировать ошибки данных расширенного типа при загрузке модулей. Он говорит вам, что тип уже загружен и не может загрузить его во второй раз.

1 голос
/ 06 декабря 2012

ВОЗМОЖНОЕ РЕШЕНИЕ:

Я обнаружил, что с SCOM 2007 R2 (не проверял это на SCOM 2012), powershell не может импортировать модуль FailoverClusters.Я попробовал предложение пропустить ошибку.Пропуск работает в самый первый раз, когда агент выполняет скрипт.После этого при последующем выполнении сценария не будет доступен командлет Get-Cluster.Каждый раз, когда вы перезапускаете агент, он пропускает ошибку, и командлет становится доступным, но снова при последующих выполнениях не удается загрузить командлет.Повышенные разрешения и неограниченное выполнение скриптов не помогли решить проблему.

Регулярный перезапуск агента - вот такая кувалда.Я не развлекал его.

Однако я обнаружил, что, если бы я использовал легкий скрипт, который порождает новый экземпляр powershell и выполняет мой основной код (файл сохраняется на диске или генерирует скрипт на диске на лету)), свежий экземпляр powershell успешно загружал модуль каждый раз, и командлет всегда был доступен.

Я знаю, что существуют опасения, что порождение одного экземпляра из другого (например, vbscript spawing powershell) имеет проблемы с perf.Но в моем случае я смог заставить агента вызвать мою оболочку powershell, сгенерировать 500-строчный скрипт на лету (используя streamwriter для perf), а затем порождать его в новой оболочке powershell.Все это выполнялось примерно за 6 секунд, включая запрос Get-ClusterResources.

Я предполагаю, что это ошибка в агенте SCOM ...

0 голосов
/ 15 февраля 2012

Сценарий Powershell (GPO_Discovery.ps1) вызвал метод WriteErrorLine для вывода следующих данных:

 Import-Module : The following error occurred while loading the extended type data file: 

Microsoft.PowerShell, C: \ Windows \ system32 \ WindowsPowerShell \ v1.0 \ Modules \ActiveDirectory \ ActiveDirectory.Types.ps1xml: файл пропущен, поскольку он уже присутствовал в Microsoft.PowerShell.

Как видно, у меня возникла та же проблема при попытке запустить:

Import-Module ActiveDirectory
Import-Module GroupPolicy

Итак, я попытался:

Import-Module -Name ActiveDirectory -OutVariable $outAD -ErrorAction SilentlyContinue
Import-Module -Name GroupPolicy -OutVariable $outGP -ErrorAction SilentlyContinue

Ничего из этого не помогло.Я собираюсь попытаться полностью удалить Import CMD-Let и повторить попытку.Я опубликую, если это работает для меня.

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