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

相关问题