C#调用Power Shell 管理Office365 执行脚本时遇到的问题
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”或它的某一个依赖项。试图加载格式不正确的程序。
C#调用Power Shell 管理Office365 执行脚本时遇到的问题的更多相关文章
- shell 脚本中的当前工作目录等于执行脚本时所在的工作目录
1. 测试脚本 在当前目录下创建 h1 h2两个文件夹 2. 在脚本所在目录执行脚本 在当前目录下创建了h1 h2两个目录 3. 在其他目录爱=下执行脚本 在其他目录下执行脚本时,在执行脚本所在的目录 ...
- 【MYSQL】在脚本中使用变量-执行脚本时传参
在shell脚本里可以定义变量,并在执行脚本时任意传参. #!/bin/bashdb_name=$1 #将第一个值赋给db_name变量sql_name=$2 #将第二个值赋给sql_name变量my ...
- 安卓8.0真机运行appium1.4遇到的问题:运行自动化脚本,手机自动安装 settings.apk和unclock.apk,执行脚本时提示安装UnicodeIME-debug.apk失败,怎么关掉自动安装?
运行自动化脚本,手机自动安装 settings.apk和unclock.apk,执行脚本时提示安装UnicodeIME-debug.apk失败,怎么关掉自动安装? 这3个apk的目录分别是: D:\P ...
- PowerShell执行脚本时“系统上禁止运行脚本”问题解决
PowerShell执行脚本策略错误 错误信息:PowerShell运行脚本错误--"系统上禁止运行脚本" 原因:默认执行策略为Restricted 解决:执行Set-Execut ...
- Shell 获取当前执行脚本的路径
filepath=$(cd "$(dirname "$0")"; pwd) 脚本文件的绝对路径存在了环境变量filepath中,可以用 echo $filepa ...
- Asp.Net 之 通过调用 WScript.Shell 启动本地 exe 程序时产生“ automation服务器不能创建对象 ”的错误
我们经常需要通过生成 ActiveXObject("WScript.Shell"); 来调用某一exe文件. 设置网页打印的页眉页脚为空: var HKEY_Root,HKEY_P ...
- Hive的Shell里hive> 执行操作时,出现FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask错误的解决办法(图文详解)
不多说,直接上干货! 这个问题,得非 你的hive和hbase是不是同样都是CDH版本,还是一个是apache版本,一个是CDH版本. 问题详情 [kfk@bigdata-pro01 apache-h ...
- source和sh执行脚本时的差异
在CentOS7下,有如下脚:sh02.sh. 1 用sh或者bash执行 先执行echo $firstname $lastname 再执行 sh sh02.sh 最后执行 echo $firstna ...
- Selenium在IE浏览器中执行脚本时输入字符太慢问题解决方法
问题描述: IE浏览器中执行Selenium脚本的时候发现输入文本的时候总是一个字符一个字符的输入,并且输入每个字符之间都隔几秒. 解决方案: 将使用的IE浏览器驱动由64位的换成32位的.
随机推荐
- Golang Gtk+3教程:Grid布局
在上个例子中我们使用了box布局,现在让我们来学习另一种布局--grid.其实这几种布局都大同小异,如果你看懂了上一个例子,想必使用grid也不是难事. 程序运行效果: package main im ...
- (转载)sqlserver2008”备份集中的数据库备份与现有的XX数据库不同”解决办法
原文链接:https://www.cnblogs.com/huangfr/archive/2012/08/09/2629687.html 因为是在另一台电脑对同名数据库做的备份,用常规方法还原,提示不 ...
- asp.net core 应用docke部署到centos7
前言 前期准备 win10 (不要安装hyper-V) VMware-Workstation-Pro/15.0 Xshell6 (非必需) VS2019 以上环境请自行安装 都是默认安装没什么可说的 ...
- 机器学习:支持向量机(SVM)
SVM,称为支持向量机,曾经一度是应用最广泛的模型,它有很好的数学基础和理论基础,但是它的数学基础却比以前讲过的那些学习模型复杂很多,我一直认为它是最难推导,比神经网络的BP算法还要难懂,要想完全懂这 ...
- 利用C#实现OPC-UA服务端
前言 最近接手了一个项目,做一个 OPC-UA 服务端?刚听到这个消息我是一脸懵,发自灵魂的三问“OPC-UA是什么?”.“要怎么做?”.“有什么用?”.我之前都是做互联网相关的东西,这种物联网的还真 ...
- Android 用空格作为分割符切割字符串
项目中有需要用到空格作为分割符切割字符串,进而转为List. String wordStore = edWord.getText().toString(); String[] word = wordS ...
- JavaScript正则表达式的模式匹配教程,并且附带充足的实战代码
JavaScript正则表达式的模式匹配 引言 正文 一.正则表达式定义 二.正则表达式的使用 三.RegExp直接量 (1)正则表达式初体验 (2)深入了解正则 字符类 重复 选择 分组与引用 指定 ...
- goland2019.2破解方法
第一步:下载 jetbrains-agent.jar 链接:https://pan.baidu.com/s/1V2qZokAeAGcbsKDaoD9eSw 提取码:nrce 第二步:将下载的jetbr ...
- python小白入门基础(二:变量)
#变量:可以改变的量就是变量,实际上是由内存开辟的一块空间,临时存在内存中,以便后续代码使用.#作用:代指内存中某个地址中的内容. #1.变量的概念name = "王五"name ...
- 记录使用vs code两天的心得
一个字 就是骚~感觉以后写博客都省了