C#调用Power Shell 管理Office365 执行脚本时遇到的问题
Power Shell管理Office參考http://www.mamicode.com/info-detail-494553.html
C#調(diào)用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();}}?
第一次出現(xiàn)的錯(cuò)誤:無法將“Connect-Msolservice”項(xiàng)識(shí)別為 cmdlet、函數(shù)、腳本文件或可運(yùn)行程序的名稱。請(qǐng)檢查名稱的拼寫,如果包括路徑,請(qǐng)確保路徑正確,然后再試一次。
然后發(fā)現(xiàn)在安裝的MSOnline模塊默認(rèn)在64位PowerShell中可以成功導(dǎo)入,但是在32位的PowerShell X86中無法導(dǎo)入,
報(bào)錯(cuò):
?
PS C:\WINDOWS\system32>> Import-Module MSOnline
Import-Module : 未能加載指定的模塊“MSOnline”,因?yàn)樵谌魏文K目錄中都沒有找到有效模塊文件。
所在位置 行: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 這個(gè)文章,但是其中有部分是錯(cuò)誤的:比如"登錄助手默認(rèn)安裝到32位的模塊庫中,64位的模塊庫中沒有",估計(jì)它弄反了。
還有C#默認(rèn)調(diào)用的是32位的PowerShell x86,而不是64位的;
這里說明下一個(gè)容易搞錯(cuò)的路徑:
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
?
后來我發(fā)現(xiàn)修改項(xiàng)目生成屬性的目標(biāo)平臺(tái)為x64可以成功調(diào)用64位的PowerShell;
?
?
這里我分析:
如果你的項(xiàng)目設(shè)置了首選32位或者引用任何32位的dll? 就會(huì)自動(dòng)調(diào)用32位的power Shell,可以通過設(shè)置目標(biāo)平臺(tái)為x64測(cè)試有沒有依賴32位程序集,如果依賴會(huì)報(bào)
?
未能加載文件或程序集“ConnectionOffice365”或它的某一個(gè)依賴項(xiàng)。試圖加載格式不正確的程序。
說明:?執(zhí)行當(dāng)前 Web 請(qǐng)求期間,出現(xiàn)未經(jīng)處理的異常。請(qǐng)檢查堆棧跟蹤信息,以了解有關(guān)該錯(cuò)誤以及代碼中導(dǎo)致錯(cuò)誤的出處的詳細(xì)信息。?
異常詳細(xì)信息:?System.BadImageFormatException: 未能加載文件或程序集“ConnectionOffice365”或它的某一個(gè)依賴項(xiàng)。試圖加載格式不正確的程序。
?
?
?
?
?
?轉(zhuǎn)載于:https://www.cnblogs.com/stjwy/p/8493959.html
總結(jié)
以上是生活随笔為你收集整理的C#调用Power Shell 管理Office365 执行脚本时遇到的问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python selenium web
- 下一篇: 2018/3/1 省选模拟考试 50分