Указанный модуль 'MSOnline' не был загружен, потому что ни в одном каталоге модулей не был найден допустимый файл модуля

Для одного из моих приложений у меня есть служба Windows (на Windows Server 2012 R2 x64), роль которой заключается в выполнении множества заданий по разным расписаниям и триггерам. Один из них - сброс пароля пользователя в Office 365. На сервере, на котором работает служба, установлены помощник по входу в Microsoft Online Services и модуль Microsoft Azure Active Directory для Windows PowerShell (MSOnline версии 1.1.166.0).

Из PowerShell я могу успешно вызвать со своим пользователем следующее:

$> $cred = Get-Credential
$> Connect-MsolService -Credential $cred

Если я запускаю PowerShell в качестве учетной записи, с которой запускается моя служба, она также работает нормально. Выполнение функции сброса пароля из службы Windows завершается ошибкой со следующим сообщением:

The term 'Connect-MsolService' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.

Добавление флага отладки к импорту модуля в коде позволило нам перетащить проблему в команду MSOnline import-module. Мы получили ошибку:

The specified module 'MSOnline' was not loaded because no valid module file was found in any module directory.

Мы уже пытались удалить и переустановить в версии x64 два инструмента (помощник по входу в Microsoft Online Services и модуль Microsoft Azure Active Directory для Windows PowerShell). Системная переменная "PATH" верна с: % SystemRoot% \ system32;% SystemRoot%;% SystemRoot% \ System32 \ Wbem;% SYSTEMROOT% \ System32 \ WindowsPowerShell \ v1.0 \; C: \ Program Files \ Microsoft \ Web Platform Installer \

Папка C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ Modules имеет подпапки модулей MSOL MSOnline и MSOnlineExtended

. Копирование двух папок в C: \ Windows \ sysWOW64 \ WindowsPowerShell \ v1.0 \ Modules, о чем сообщалось как о решении во многих других темах, не удается здесь со следующей ошибкой:

System.Management.Automation.CmdletInvocationException: Could not load file or assembly 'file:///C:\Windows\system32\WindowsPowerShell\v1.0\Modules\MSOnline\Microsoft.Online.Administration.Automation.PSModule.dll' or one of its dependencies. An attempt was made to load a program with an incorrect format. ---> System.BadImageFormatException: Could not load file or assembly 

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

Эти исследования приводят нас к думать, что есть какая-то проблема с самой службой, но не могу понять, что / почему.

Спасибо.

5
задан 21 November 2017 в 17:37
1 ответ

Мы нашли проблему. Изменение параметра сборки целевой платформы на «Предпочитать 32-битный» в свойствах проекта решило проблему.

0
ответ дан 3 December 2019 в 02:06

Теги

Похожие вопросы