コマンドラインから ASP.NET4 を有効化する

最近いろいろ試してみたのでメモ。基本的に Windows 7 SP1 でしか動作確認してない。
以下の操作はすべて管理者権限で実行すること。

IISASP.NETの有効化

Windows コンポーネントなので ocsetup かと思ったが、 DISM コマンドでいけた。ただし DISM コマンドは結構重いので、無効化されてる場合だけ有効化するようにした。

SET FEATURE=IIS-WebServerRole
dism /online /get-features /format:table | findstr /i "%FEATURE%" | find /i "有効"
IF "%ERRORLEVEL%"=="1" dism /online /enable-feature /featurename:"%FEATURE%"

SET FEATURE=IIS-ISAPIFilter
dism /online /get-features /format:table | findstr /i "%FEATURE%" | find /i "有効"
IF "%ERRORLEVEL%"=="1" dism /online /enable-feature /featurename:"%FEATURE%"

SET FEATURE=IIS-ISAPIExtensions
dism /online /get-features /format:table | findstr /i "%FEATURE%" | find /i "有効"
IF "%ERRORLEVEL%"=="1" dism /online /enable-feature /featurename:"%FEATURE%"

SET FEATURE=IIS-NetFxExtensibility
dism /online /get-features /format:table | findstr /i "%FEATURE%" | find /i "有効"
IF "%ERRORLEVEL%"=="1" dism /online /enable-feature /featurename:"%FEATURE%"

SET FEATURE=IIS-ASPNET
dism /online /get-features /format:table | findstr /i "%FEATURE%" | find /i "有効"
IF "%ERRORLEVEL%"=="1" dism /online /enable-feature /featurename:"%FEATURE%"

ASP.NET4の有効化

IIS .NET のインストール順によっては ASP.NET が有効化されない場合がある。
aspnet_regiis -lv で有効化されている ASP.NET のバージョンが表示されるので、それで ASP.NET4 がなければ有効化する。

%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -lv | find /i "4.0.30319.0"
IF "%ERRORLEVEL%"=="1" %SystemRoot%\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i

上記で ASP.NET4 が有効化されるが、 DefaultAppPool は v2 のままなので appcmd で v4 にする。

%windir%\system32\inetsrv/appcmd list apppool "DefaultAppPool" | find /i "v4.0"
IF "%ERRORLEVEL%"=="1" %windir%\system32\inetsrv/appcmd set apppool "DefaultAppPool" /managedRuntimeVersion:v4.0"