2016-11-08 69 views
0

您好我已經C#.NET的IIS遠程PowerShell

//set up exchange server name 
     var Exchangesrv = "ex1.iah.ac.uk"; 


     // Initialize PowerShell engine 
     var shell = PowerShell.Create(); 

     // Add the script to the PowerShell object 
     shell.Commands.AddScript("Invoke-Command -Computername hostname.example.com -ScriptBlock{get-alias}"); 

     // Execute the script 
     var results = shell.Invoke(); 


     Input.DataSource = results; 
     Input.DataBind(); 

所以很乾脆我要調用一個電源外殼命令和「輸入」下面的代碼位是一個列表框對象我填充

但是,當我在IIS服務器上運行它不起作用,我認爲這是因爲IIS應用程序沒有運行遠程服務器上的管理員帳戶我試圖運行該命令。任何人都可以幫助解決這個問題嗎?我怎樣才能讓網頁用正確的憑證調用這個invoke命令?

編輯
所以我決定創建的時候打開,我現在用的帳戶電源外殼的交換模塊被加載,這意味着在Web服務器上的配置文件。但是,使用下面的代碼

using (var powershell = PowerShell.Create()) 
     { 
      //powershell.Runspace = runspace; 


      // Add the script to the PowerShell object 
      //powershell.AddScript("Get-alias"); 
      powershell.AddScript("Get-DynamicDistributionGroup"); 


      // Execute the script 
      var results = powershell.Invoke(); 


      Input.DataSource = results; 
      Input.DataBind(); 
時,我沒有看到這個加載

那麼應該怎麼發生的是電源外殼在本地運行的Web服務器上,但我需要它來加載配置文件,但是我看不出爲什麼它是不這樣做。是否有命令強制它加載模塊。

+0

那麼,首先要做的事情 - 在那裏獲得正確的日誌記錄,以便知道*爲什麼*這是失敗的,而不僅僅是假設。其次,如果是因爲權限不足(這可能是一個問題,我同意),那麼您可以[以不同的用戶模仿](https://www.google.co.uk/search?q=impersonation + iis + asp.net&oq = impersonation + iis + asp.net&aqs = chrome..69i57.4032j0j7&sourceid = chrome&ie = UTF-8)。或者,'Invoke-Command'具有'-Credential'參數,也可以用於模擬。 –

+0

嗨,對不起,我已經打開IIS中的日誌記錄,但是在日誌文件中沒有看到任何關於它的信息。 – DevilWAH

+0

對不起 - 我的意思是你應該把日誌消息添加到你的應用程序*,通常使用像Log4Net這樣的庫來確保你可以準確地診斷這個和將來的問題。 IIS日誌記錄旨在告訴您有關HTTP調用,而不是應用程序處理。 –

回答

0

到底冒充和調用沒有做的伎倆(我可以使用調用,但我不想在代碼證書)

我發現我不得不改變對應用程序池的屬性,然後它工作得很好。