Power Shell管理Office参考http://www.mamicode.com/info-detail-494553.html

C#调用Power Shell 参考 https://www.cnblogs.com/chenkai/archive/2010/11/09/1872471.html

string pwd = "**********";
string userName = "**********";
StringBuilder ss = new StringBuilder();
ss.AppendLine("$password = ConvertTo-SecureString \"" + pwd + "\" -AsPlainText –Force");
ss.AppendLine("$credential = New-Object System.Management.Automation.PsCredential(\"" + userName + "\",$password)");
ss.AppendLine("$cred = Get-Credential -cred $credential");
ss.AppendLine("Import-Module MSOnline");
//ss.AppendLine("Get-Module");
ss.AppendLine("Connect-Msolservice -cred $cred");
ss.AppendLine("Get-MsolAccountSku"); using (Runspace runspace1 = RunspaceFactory.CreateRunspace())
{
Collection<PSObject> results = null;
try
{
runspace1.Open();
Pipeline pipeline = runspace1.CreatePipeline();
pipeline.Commands.AddScript(ss.ToString()); results = pipeline.Invoke();
}
catch (Exception ex)
{
var ss1 = ex.ToString();
}
finally
{
runspace1.Close();
}
}

第一次出现的错误:无法将“Connect-Msolservice”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。

然后发现在安装的MSOnline模块默认在64位PowerShell中可以成功导入,但是在32位的PowerShell X86中无法导入,

报错:

PS C:\WINDOWS\system32>> Import-Module MSOnline
Import-Module : 未能加载指定的模块“MSOnline”,因为在任何模块目录中都没有找到有效模块文件。
所在位置 行:1 字符: 1
+ Import-Module MSOnline
+ ~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ResourceUnavailable: (MSOnline:String) [Import-Module], FileNotFoundException
+ FullyQualifiedErrorId : Modules_ModuleNotFound,Microsoft.PowerShell.Commands.ImportModuleCommand

原来模块只安装到64位下,32位并没有安装MSOnline模块;

这里我参考了http://just4fun.cn/?p=786 这个文章,但是其中有部分是错误的:比如"登录助手默认安装到32位的模块库中,64位的模块库中没有",估计它弄反了。

还有C#默认调用的是32位的PowerShell x86,而不是64位的;

这里说明下一个容易搞错的路径:

C:\Windows\SysWOW64\WindowsPowerShell\v1.0 下的是32位的Power Shell,

而C:\Windows\System32\WindowsPowerShell\v1.0放的是64位的Power Shell;

这里很容易被SysWOW64和System32搞晕,SysWOW64文件夹里面的程序类型可参考百度百科https://baike.baidu.com/item/syswow64/10627204?fr=aladdin

后来我发现修改项目生成属性的目标平台为x64可以成功调用64位的PowerShell;

这里我分析:

如果你的项目设置了首选32位或者引用任何32位的dll  就会自动调用32位的power Shell,可以通过设置目标平台为x64测试有没有依赖32位程序集,如果依赖会报

未能加载文件或程序集“ConnectionOffice365”或它的某一个依赖项。试图加载格式不正确的程序。

说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.BadImageFormatException: 未能加载文件或程序集“ConnectionOffice365”或它的某一个依赖项。试图加载格式不正确的程序。

 

最新文章

  1. Android四大组件--ContentProvider详解(转)
  2. IO流(四)__流的操作规律总结
  3. 100114J
  4. 51nod p1175 区间中第K大的数
  5. python学习笔记:Day01
  6. [转]如何在Windows下使用WebMatrix+IIS开发PHP程序
  7. 一模 (4) day2
  8. 获取iframe中的元素
  9. Matlab中添加搜索目录
  10. JDBC高级部分
  11. Oracle 学习笔记 17 -- 异常处理(PL/SQL)
  12. Java NIO内存映射---上G大文件处理(转)
  13. Selenium+Python之163邮件发送
  14. 最小生成树——Prim算法和Kruskal算法
  15. scala读取解析json文件
  16. ES6 解构
  17. μC/OS-II 的系统时钟
  18. 2200: [Usaco2011 Jan]道路和航线 (拓扑排序+dijstra)
  19. CC2431 代码分析③-忍辱负重的CC2430
  20. 015 在大数据中,关于mapreduce的粗略优化,以及mapreduce的处理过程解释

热门文章

  1. windows下mongoDB的下载和安装
  2. C++最好的图形库是什么?
  3. Android 用versionName判断版本大小(是否进行版本更新)
  4. C++生成元
  5. 用终端命令行(BASH)将本地项目上传到Github并提交代码
  6. 易盛信息9.0外盘期货行情数据API接口公共授权开发包例子代码
  7. Java 类初始化和实例初始化过程
  8. 数据结构-二叉树(6)哈夫曼树(Huffman树)/最优二叉树
  9. 七夕节来啦!AI一键生成情诗,去发给你的女朋友吧!
  10. 使用VS开发的一个开机自启动启动、可接收指定数据关闭电脑或打开其他程序