70

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

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

任何可能对如何通过 PowerShell 执行此操作有所了解的人都会对我有很大帮助。

4

4 回答 4

114

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

Set-ItemProperty IIS:\AppPools\<pool_name> managedRuntimeVersion v4.0
于 2010-11-19T21:00:58.623 回答
1
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 的版本下载详细脚本

于 2016-11-15T05:38:53.317 回答
0

或者,您可以在 New-WebAppPool cmdlet 的返回值上设置此项。如果您还想更改其他属性,此方法可能很有用。

对于 v4.0 池,它将如下所示:

Import-Module WebAdministration
$appPool = New-WebAppPool -Name Pool1
$appPool.managedRuntimeVersion = "v4.0"
$appPool | Set-Item

要将其设置为“无托管代码”,您可以使用以下命令:

Import-Module WebAdministration
$appPool = New-WebAppPool -Name Pool2
$appPool.managedRuntimeVersion = ""
$appPool | Set-Item
于 2020-06-03T18:53:06.850 回答
0

当您不希望指定运行时,这对我有用:

$newAppPool = New-WebAppPool -Name $AppPoolName 
$newAppPool.managedRuntimeVersion = ""
$newAppPool | Set-Item
于 2022-02-23T04:40:52.513 回答