最近在做DG的自动化脚本,发现Xunit框架加载不了Msonline的module, 查了很多资料,匹配各种组合发现了问题的所在。
通过C#连接powershell的步骤如下
1.首先根据以下说明下载Msonline, 本地windows powershell测试安装导入和连接是否成功。
https://docs.microsoft.com/en-us/office365/enterprise/powershell/connect-to-office-365-powershell
2.安装完成后通过c#加载ps文件并读取
this.psScript = System.IO.File.ReadAllText(psScriptPath);\\ps脚本路径
private PS.PowerShell CreateSharedPsIns()
{
Runspace runspace = RunspaceFactory.CreateRunspace();
PS.PowerShell psInstance = PS.PowerShell.Create();
runspace.Open();
psInstance.Runspace = runspace;
psInstance.AddScript(this.psScript);
psInstance.Invoke();
psInstance.Commands.Clear();
psInstance.AddCommand("ConnectToMsol").AddParameter("adminUserName", this.adminUserName).AddParameter("adminPSW", this.securePassword);//连接
psInstance.Invoke();
return psInstance;
}
3.本来是调用运行就成功了,现在发现Msonline 导入不成功,找不到也导入不进来
发现问题:项目本身的XUnit默认运行在X86上,而64的系统只能安装64位的Msonline, 所以加载不进来。
解决办法:在工具栏的test中把xunit的运行环境改成64位即可。
这样运行应该就不会出现Import-Module Msonline的加载不进来的问题了。
另外Xunit有时候发现运行着就运行不了了,我经常遇到这个问题。
这个和32位和64位也很有关系,注意output栏的输出,及时查看error 内容,基本上项目保持一致应该运行还挺稳定的。
具体信息可参考: