日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C#调用Power Shell 管理Office365 执行脚本时遇到的问题

發布時間:2023/12/1 C# 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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”或它的某一個依賴項。試圖加載格式不正確的程序。

?

?

?

?

?

?

轉載于:https://www.cnblogs.com/stjwy/p/8493959.html

總結

以上是生活随笔為你收集整理的C#调用Power Shell 管理Office365 执行脚本时遇到的问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。