PowerShell
IIS

アプリケーションプールに既定値を設定して作成

サーバー全体で既定値を統一できるなら前半の内容で。
既定値がある場合は後半のテンプレート用意する感じになります。
いずれにしてもIIS操作するので管理者権限必要です。

環境

OS Windows Server 2012 R2
PowerShell 5.0

既定値のアプリケーションプールを作成する

IISマネージャーからも作成できますが、何台も同じ事やる場合はこっちが楽です。

# IIS管理モジュール
PS> Import-Module WebAdministration
# 既定の設定でアプリケーションプールを作成
PS> New-WebAppPool sample

Name                State        Applications
----                -----        ------------
sample              Started

既定値の設定方法

こちらもPowerShellで。。。は面倒だったのでIISマネージャー使います。
PowerShell 使う場合は Set-ItemProperty とか駆使してできるかも(;´∀`)

  • 対象サーバーを選択
    • アプリケーション プール
      • 操作 > アプリケーション プールの既定値の設定

構成エディタからいじる場合は、system.applicationHost/applicationPools > applicationPoolDefaults あたり。

New-WebAppPool はここの設定値を元にアプリケーションプールを作成します。

既存のアプリケーションプールをコピーする

うちの会社で採用した方法がこっち。
アプリケーションプールの用途によって設定が微妙に違ったので applicationPoolDefaults は使わなかった。
今考えると可変個のプールは全部同じ設定だったので最初の方法でもよかったかもしれないけど(´・ω・`)
ちなみに既存からのコピーはIISマネージャーではやり方わかりません。

# IIS管理モジュール
PS> Import-Module WebAdministration
# アプリケーションプールのルート
PS> cd IIS:\AppPools
# 既存のコピー
PS> cp .\sample .\sample2 -Recurse
# 設定の調整、うちの場合はテンプレートでは autoStart = Falseだったので明示的な開始が必要
PS> Start-WebAppPool sample2
PS> Get-Item sample2 | select autoStart,state

autoStart state  
--------- -----  
     True Started

これでやると applicationPoolDefaults 以外の既定値でアプリケーションプールを新規に作成できます。

ハマりポイント?

コピー元のアプリケーションプールに、リサイクル > 特定の時間 の設定を追加していると、コピー時にエラーで落ちていた。
そのためテンプレートには特定の時間 のリサイクル設定を入れないでコピー後に無理やり設定していた。

PS> Set-ItemProperty -Path IIS:\AppPools\[apppool] -Name Recycling.periodicRestart.schedule -Value "01:30:00"

。。。だったけど今試したら問題なくコピーできた。。。ここは原因不明です(;´Д`)