web-dev-qa-db-ja.com

New-WebAppPoolを使用するときに.NET Frameworkのバージョンを設定するにはどうすればよいですか?

IIS PowerShell CmdletNew-WebAppPoolを使用して、使用する.NET Framework。現在、デフォルトはv2.0ですが、MVCを使用していますが、これはv4.0の機能であるため機能しません。各サイトに独自のアプリケーションプールを持たせたいので、スクリプトを介してそれらを構成することができないため、これらのプールを手動で作成する必要があります。これを自動化する方法はありますか?

documentation はそれを設定するためのパラメーターを提供していないようであり、Googleはスクワットを開始しているため、答えは「できない」となるでしょう。スクリプト化された方法でサイトを設定することのみが許容可能であり、アプリケーションプールの構成に関することは単に「行われていない」という印象を私に与えています。なぜか想像できません。プロセスの1つの主要部分を自動化している場合、なぜ他の主要部分を自動化できないのでしょうか。

PowerShellを使用してこれを行う方法についてある程度の洞察を持っている人は誰でも私を大いに助けてくれるでしょう。

61
Matt DiTrolio

WebAdministrationモジュールが読み込まれたら、作成したプールでこれを試してください。

Set-ItemProperty IIS:\AppPools\<pool_name> managedRuntimeVersion v4.0
103
Keith Hill
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のバージョンを指定する方法

1
frank tan