2012-04-16 209 views
3

我有Windows Server 2008 R2計算機,它具有Power Shell v1.0。我想使用Power Shell與C#連接到MS 365在線服務。我已經安裝了Office 365 cmdlet和Microsoft Online Services登錄助手。 (參考文獻:http://onlinehelp.microsoft.com/en-us/office365-enterprises/hh124998.aspx#BKMK_installOffice 365:使用Power Shell腳本連接到Office Online 365服務

我的腳本是:

$password = ConvertTo-SecureString "xxxxx" -AsPlainText –Force 

$credential = New-Object System.Management.Automation.PsCredential("[email protected]",$password) 

$cred = Get-Credential -cred $credential 

Import-Module MSOnline 

Connect-Msolservice -cred $cred 

我可以成功地運行在Power Shell命令窗口此腳本。但我有問題在c#應用程序中運行此腳本。

這裏是我的C#代碼:

public void RunScript() 
    { 
     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("Connect-Msolservice -cred $cred"); 

     using (Runspace runspace = RunspaceFactory.CreateRunspace()) 
     { 
      Collection<PSObject> results = null; 
      try 
      { 
       runspace.Open(); 
       Pipeline pipeline = runspace.CreatePipeline(); 
       pipeline.Commands.AddScript(ss.toString()); 

       results = pipeline.Invoke(); 
      } 
      finally 
      { 
       runspace.Close(); 
      }     
     } 
    } 

我得到以下異常:

'連接-Msolservice' 一詞未被識別爲cmdlet,函數的名稱,腳本文件,或可操作程序。檢查名稱的拼寫,或者如果包含路徑,請驗證路徑是否正確,然後重試。

有什麼遺漏嗎?

感謝

回答

1
InitialSessionState iss = InitialSessionState.CreateDefault(); 
iss.ImportPSModule(new string[] { "MSOnline" }); 

using (Runspace runspace = RunspaceFactory.CreateRunspace(iss)) 
{ 
// blah 
} 
+2

的評論以及感謝。我也會嘗試你的建議。但是,我發現它不能識別「Connect-Msolservice」命令的原因。原因很簡單。我創建了一個控制檯應用程序,其Platform目標是x86,而我的開發機器是Microsoft Server 2008 64bit,我已經安裝了MS Online Service模塊(64位)。通過將平臺目標更改爲任何CPU來解決問題。 – Prakash 2012-04-17 17:41:27

+0

嗨大衛,我試着用上述解決方案,但結果相同(沒有成功)。 順便說一句。 MS Online服務模塊(64位)的cmdlet似乎必須從64位進程/應用程序執行/運行。這是我所經歷的。如果你對此有任何想法,請分享。 – Prakash 2012-04-18 11:26:57

+0

感謝分享,普拉卡什。我遇到了同樣的問題。 – ACR 2016-10-13 14:51:25

0

請確保您已經安裝了以下幾件事:

1. SharePoint Online Management Shell 
2. Microsoft Online Services Sign-In Assistant version 7.0 or greater version 
3. Windows Azure Active Directory Module