0

我有以下配置中的PowerShell/PowerCLI的腳本:如何配置IIS-8和它的應用程序池執行託管Asp.net MVC

  • 的Windows Server 2012 R2。

  • IIS-8。

  • 在IIS-8下託管的ASP.NET MVC-5 Web應用程序。

現在我的asp.net MVC的Web應用程序具有執行一些PowerShell的& PowerCLI的命令的方法,這裏是腳本的一個樣本:

var shell = PowerShell.Create(); 
var shell2 = PowerShell.Create(); 
var shell3 = PowerShell.Create(); 

string PsCmd = "add-pssnapin VMware.VimAutomation.Core; $vCenterServer = '" + vCenterName + 
    "';$vCenterAdmin = '" + vCenterUsername + "' ;$vCenterPassword = '" + vCenterPassword + 
    "';" + System.Environment.NewLine; 

PsCmd = PsCmd + "$VIServer = Connect-VIServer -Server $vCenterServer -User $vCenterAdmin ` 
    -Password $vCenterPassword;" + System.Environment.NewLine; 
PsCmd = PsCmd + "Get-VMHost " + System.Environment.NewLine; 

// PowerCLI script to the the hypervisor network info 
string PsCmd2 = "add-pssnapin VMware.VimAutomation.Core; $vCenterServer = '" + vCenterName + 
    "';$vCenterAdmin = '" + vCenterUsername + "' ;$vCenterPassword = '" + vCenterPassword + 
    "';" + System.Environment.NewLine; 

PsCmd2 = PsCmd2 + "$VIServer = Connect-VIServer -Server $vCenterServer -User $vCenterAdmin ` 
    -Password $vCenterPassword;" + System.Environment.NewLine; 
PsCmd2 = PsCmd2 + " Get-VMHost " + vCenterName + "| Get-VMHostNetworkAdapter -VMKernel" + 
    System.Environment.NewLine; 

shell.Commands.AddScript(PsCmd); 
shell2.Commands.AddScript(PsCmd2); 

dynamic results = shell.Invoke(); // execute the first PowerCLI script 
dynamic results2 = shell2.Invoke(); // execute the second PowerCLI script 

// the PowerCLI executed successfully 
if (results != null && results.Count > 0 && results[0].BaseObject != null) 

我面臨的問題如下:

  1. 當我部署asp.net MVC編碼它包含了IIS-7 +的Windows Server 2008 R2上面的方法,一切都運轉良好,該腳本返回的結果。

  2. 但現在,我們的生產服務器上,我們有IIS-8 + Windows Server 2012中R2,和上述方法不工作時,PowerShell腳本返回null ...

這裏是設置我有IIS-8:

  1. 我定義了一個多米提安用戶的默認應用和我加入該域用戶在本地管理員組在主機服務器上。

  2. 我還爲Web應用程序啓用匿名身份驗證,並將其定義爲以「應用程序池標識」身份運行。

那麼任何人都可以提出爲什麼IIS-8不允許託管的asp.net web應用程序運行powershell腳本?

回答

1

您是否嘗試首先在WS2012r2服務器PowerShell控制檯中執行PowerShell/PowerCli腳本?

如果是這樣,你使用32位或64位控制檯?嘗試在每一個?

如果是這樣,你認爲你的項目目標平臺匹配64或32位(在腳本中的腳本工作在控制檯)。

+0

是的,我試圖直接在Powercli窗口內運行腳本,他們工作得很好。我使用的是64位版本,我也嘗試將目標鎖定到特定的.exe,如下所示:「Start-Process -FilePath C:\\ Windows \\ System32 \\ WindowsPowerShell \\ v1.0 \\ powershell.exe;」「但也沒有工作..我有一種感覺,這個問題是關於IIS-8與IIS-7的工作方式,因爲在IIS-7上有效,但是在生產上,我們使用IIS-8與Windows Server 2012 R2 ..你可以更多地討論這個問題嗎? –

+1

你有沒有嘗試過把你的ASP MVC項目作爲64位的目標,儘管有任何CPU。 – JPBlanc

+0

你可以在此討論更多嗎?我該怎麼做? –

0

我想知道PowerCLI是否安裝在生產服務器上。如果沒有,當然Add-PSSnapin vmware.vimAutomation.core會失敗。

一個簡單的string PsCmd創建一個空文件或電子郵件可以幫助驗證你的預感,新的IIS和PS不是很好玩。 (或者至少幫助把mcve中的M表示爲一個更整潔的問題)。

執行政策和用戶帳戶控制似乎不太可能突破這一點,但我還沒有測試過。特別是如果你不想處理代碼中的錯誤,那麼製作測試虛擬機來匹配產品可能是值得的。

相關問題