使用 New-WebAppPool 时如何设置.NETFramework 版本?

我希望了解如何使用 IIS PowerShell Cmdlet 新增-网上应用程式池来指定。要使用的 NET 框架。目前,它默认为 v2.0,但是我使用的是 MVC,这将不会工作,因为这是 v4.0的特性。我们真的希望每个站点都有自己的应用程序池,而且似乎我们必须手动创建这些池,因为无法通过脚本配置它们。有办法自动化吗?

我担心答案会是“你不能”,因为 文件似乎没有提供任何设置参数,而谷歌却一无所获; 它给我的印象是,只有以脚本方式设置站点才是可以接受的,而关于配置应用程序池的一些事情就是“没有完成”我无法想象为什么不能——如果你正在自动化流程的一个主要部分,为什么不能自动化另一个主要部分呢?

任何人谁可能有一些洞察力如何通过 PowerShell 做到这一点将帮助我很大。

24324 次浏览

加载 WebAdministration 模块后,在您创建的池中尝试下面的操作:

Set-ItemProperty IIS:\AppPools\<pool_name> managedRuntimeVersion v4.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
}
}
}

您可以从 如何设置 IIS 应用程序池来指定.NETFramework 的版本下载详细脚本

或者,您可以将其设置为 New-WebAppPoolcmdlet 的 on 返回值。如果希望更改其他属性,则此方法可能非常有用。

对于 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

当您不希望指定运行时时,下面的方法对我很有效:

$newAppPool = New-WebAppPool -Name $AppPoolName
$newAppPool.managedRuntimeVersion = ""
$newAppPool | Set-Item