2013-04-12 150 views
0

當我嘗試使用C#代碼運行腳本時。我得到以下錯誤:使用C#代碼運行powershell腳本

"You cannot call a method on a null-valued expression." 

這會是我的C#代碼,這是錯誤

 Runspace runSpace = RunspaceFactory.CreateRunspace(); 
     runSpace.Open(); 

     RunspaceInvoke runSpaceInvoker = new RunspaceInvoke(runSpace); 
     Pipeline pipeLine = runSpace.CreatePipeline(); 
     pipeLine.Commands.AddScript(@"D:\NewSites\test-new\ConfigureIIS7.ps1"); 
     try 
     { 
      pipeLine.Invoke(); 
     } 
     catch (Exception ex) 
     { 
      throw ex; 
     } 

     pipeLine.Stop(); 

     runSpace.Close(); 

或者我應該在我的PowerShell腳本查找的問題? shell腳本在正常執行時工作。 在此先感謝。

+2

這通常是你[PowerShell的(http://stackoverflow.com/questions/12326038得到一個錯誤/ powershell-if-then-can-call-a-method-on-a-null-valued -expression-expression),而不是.NET。我調試你的腳本來看看什麼是空的,也許你需要加載一個PSSnapin腳本才能工作。 – vcsjones

+0

當你直接運行PS腳本時,它會工作,因爲你有適當的權限(可能是Admin?)。我猜你的.NET應用程序沒有相同的權限,因此創建爲空的對象,並嘗試使用這些對象。 – D3vtr0n

+0

這是我的PowerShell腳本中的錯誤導致C#停止執行腳本。現在我得到「SEHException未處理,外部組件引發異常」。 – Trustos

回答

0

我不是一個專家,但似乎你的錯誤是一個POWERSHELL錯誤。

例如參見This

我認爲這個問題是定位到你的PowerShell腳本

-1

你可以嘗試:

System.Diagnostics.Process.Start(@"D:\NewSites\test-new\ConfigureIIS7.ps1");