今天遇到的一个问题,其实以前也遇到过,就是找了半天文档也没有解决。具体出错信息如下:
PS C:\> Import-Module MSOnline
Import-Module : Could not load file or assembly 'file:///C:\Program
Files\WindowsPowerShell\Modules\MSOnline\1.1.183.17\Microsoft.Online.Administration.Automation.PSModule.dll' or one of
its dependencies. An attempt was made to load a program with an incorrect format.
At line:1 char:1

  • Import-Module MSOnline
  • 
    + CategoryInfo          : InvalidOperation: (:) [Import-Module], BadImageFormatException
    + FullyQualifiedErrorId : FormatXmlUpdateException,Microsoft.PowerShell.Commands.ImportModuleCommand
    ![](https://s1.51cto.com/images/blog/201907/20/7472219814a51e465f4a9bdac902942e.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

在winndows 10以后都是自动安装Windows Management framework 5.1
官网给的参考资料就是:
https://docs.microsoft.com/en-us/office365/enterprise/powershell/connect-to-office-365-powershell

需要安装的一个组件是:Microsoft Online Services Sign-in Assistant for IT Professionals RTW,这个我也安装了。
然后就是运行命令:install-module -name AzureAD
这个命令也是运行成功的,但是一运行 import-module MSOnline就会出错。
我去这里 C:\Windows\SysWOW64\WindowsPowerShell\v1.0\Modules 检查了下,没有下载的模块,但是发现这种在线直接安装的模块都放在C:\Program Files (x86)\WindowsPowerShell\Modules

最笨的办法就是把C:\Program Files (x86)\WindowsPowerShell\Modules所有文件拷到 C:\Windows\SysWOW64\WindowsPowerShell\v1.0\Modules

然后再次运行,发现还是失败,我都快被气晕了。框架也有,那个认证的组件也安装了,还是不行呢。因为我习惯用POWERSHELL ISE来干活,索性就打开ISE再整一遍,其中有一个说法是把Set-ExecutionPolicy 改成Unrestricted

import-module MSOnline报错解决方案_第1张图片

然后我就在ISE里一顿操作猛如虎,然后问题就解决了。其实回想起来还是POWERSHELL版本引起的,系统默认给安装了64位的和X86的,混在一起乱七八糟的。反正能用了就行了,我也不纠节为啥那个POWERSHELL X64就是不能用了。