53

我在看如何使用IIS PowerShell Cmdlet New-WebAppPool來指定要使用的.NET Framework版本。目前,它默認爲v2.0,但是我使用的是MVC,並且這不起作用,因爲這是v4.0的一項功能。我們真的希望每個站點都擁有自己的應用程序池,而且由於無法通過腳本配置它們,因此我們似乎必須手動創建這些池。有什麼辦法可以自動化嗎?如何在使用New-WebAppPool時設置.NET Framework版本?

恐怕答案是「你不行」,因爲documentation似乎沒有提供設置它的任何參數,而Google正在蹲下;它給我的印象是隻能以腳本方式設置站點是可以接受的,而關於配置應用程序池的一些事情只是「未完成」。我無法想象爲什麼不能 - 如果您將流程的一個主要部分自動化,爲什麼不能自動化其他主要部分?

任何對PowerShell如何做到這一點有所瞭解的人都會大大幫助我。

回答

90

隨着WebAdministration模塊加載試穿一下,你已經創建了一個池:

Set-ItemProperty IIS:\AppPools\<pool_name> managedRuntimeVersion v4.0 
+23

下載詳細的腳本有可設置的屬性的列表,在這裏:HTTP ://msdn.microsoft.com/en-us/library/aa347554(v = VS.90)的.aspx – 2011-05-18 08:29:25

0
Import-Module WebAdministration 
#Get all web sites 
dir IIS:\Sites | ForEach-Object { 
    #Go to the app pools root 
    cd IIS:\AppPools\ 
    if (!(Test-Path $_.Name -pathType container)) 
    { 
    #Create the app pool and set .net framework version 
    $appPool = New-Item $_.Name 
    $appPool | Set-ItemProperty -Name "managedRuntimeVersion" -Value $IISAppPoolDotNetVersion 
    #Go to the web sites root 
    cd IIS:\Sites\ 
    $iisApp = Get-Item $_.Name 
    $iisApp | Set-ItemProperty -Name "applicationPool" -Value $_.Name 
    } 
    else { 
    $dotNetVersion = (Get-ItemProperty $_.Name managedRuntimeVersion).Value 
    if ($dotNetVersion -ne $IISAppPoolDotNetVersion){ 
     #Get the app pool and set .net framework version 
     $appPool = Get-Item $_.Name 
     $appPool | Set-ItemProperty -Name "managedRuntimeVersion" -Value $IISAppPoolDotNetVersion  
    } 
    } 
} 

您可以從how to set the IIS Application Pool to specify version of the .NET Framework

相關問題