Windows-使用New-WebAppPool时如何设置.NET Framework版本?

我正在寻找如何使用IIS PowerShell Cmdlet New-WebAppPool指定要使用的.NET Framework版本。 当前,它默认为v2.0,但是我使用的是MVC,由于这是v4.0的功能,因此无法使用。 我们确实希望每个站点都有其自己的应用程序池,并且由于无法通过脚本配置它们,因此似乎必须手动创建这些池。 有什么办法可以自动化吗?

恐怕答案将是“您做不到”,因为该文档似乎没有提供用于设置它的任何参数,并且Google正在蹲下。 它给我的印象是仅以脚本方式设置站点是可以接受的,而有关配置应用程序池的事情只是“没有完成”。 我无法想象为什么不这样做-如果您要自动化流程的一个主要部分,为什么不能自动化另一个主要部分呢?

任何对如何通过PowerShell执行此操作有一些见识的人都将极大地帮助我。

2个解决方案
100 votes

加载WebAdministration模块后,请在您创建的池上尝试以下操作:

Set-ItemProperty IIS:\AppPools\<pool_name> managedRuntimeVersion v4.0
Keith Hill answered 2019-10-14T05:34:07Z
1 votes
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       
    } 
  }
} 

您可以从如何设置IIS应用程序池以指定.NET Framework版本的过程中下载详细脚本。

frank tan answered 2019-10-14T05:34:33Z
translate from https://stackoverflow.com:/questions/4229082/how-do-i-set-the-net-framework-version-when-using-new-webapppool