C#調用Power Shell 管理Office365 執行腳本時遇到的問題

来源:https://www.cnblogs.com/stjwy/archive/2018/03/02/8493959.html
-Advertisement-
Play Games

Power Shell管理Office參考http://www.mamicode.com/info-detail-494553.html C#調用Power Shell 參考 https://www.cnblogs.com/chenkai/archive/2010/11/09/1872471.htm ...


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”或它的某一個依賴項。試圖載入格式不正確的程式。

 

 

 

 

 

 

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • import java.io.File; import java.io.FileInputStream; import java.util.ArrayList; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.... ...
  • 最近在eclipse中,使用svn導入svn上的一個maven項目,但是導入後類的包並沒有以源碼包的方式顯示,而是以普通文件包的方式顯示出來,在對類進行F3等操作時就報錯:“the resource is not on the build path of a java project”。 這種情況的 ...
  • Maven是優秀的Java項目對象模型解決方案,意為知識的積累(意地緒文),Maven可以方便的解決Java項目包依賴問題,通過配置pom.xml引入依賴,並自動引入其他依賴。 操作系統版本:windows 7 Eclipse版本:Oxygen.1a(4.7.1a) Maven版本:3.5.2 JD ...
  • if 語句結構 if 判斷條件: 要執行的代碼 判斷條件:一般為關係表達式或者bool類型的值 執行過程:程式運行到if處,首先判斷if所帶的條件,如果條件成立,就返回True,則執行if所帶的代碼;如果條件不成立,就返回值是False, 跳過if語句繼續向下執行。 示例1: 在控制台應用程式中輸入 ...
  • 簡介 IMapControl介面最重要的是包含IMap屬性,還提供另外的屬性用於:管理一般的外觀顯示,管理圖層,載入地圖文檔以及跟蹤在界面上顯示的圖形。 小知識點:一般一個介面的最新實現是 Default ,如果又多個實現,是通過數字區分,數字越大,其版本也越新。 屬性介紹 1. IActiveVi ...
  • 目錄 xBIM WeXplorer 簡要介紹 xBIM WeXplorer xViewer 基本應用 xBIM WeXplorer xViewer 瀏覽器檢查 xBIM WeXplorer xViewer的導航,相機、剖切、隱藏 等操作 xBIM WeXplorer 設置模型顏色 xBIM 綜合使用 ...
  • https://www.cnblogs.com/xishuai/p/asp-net-5-owin-katana.html http://wiki.jikexueyuan.com/project/think-in-asp-net-mvc/chapter-eight.html http://wiki.j ...
  • 目的 因為某些原因需要將存放在 Google Chrome 內的書簽導出到本地,所幸 Google Chrome 提供了導出書簽的功能。 分析 首先在 Google Chrome 瀏覽器當中輸入 來到書簽管理頁面,找到最右側的三個點,選擇導出書簽,導出的文件是一個 HTML 文件,裡面包含了所有書簽 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...