Sdílet prostřednictvím


【IIS7】 applicationHost.config を操作したいのだぁ どんな方法があるんじゃい

基本的に方法はいっぱいあります。
何故かって? だって XML 形式のテキストファイルですもの。

でも IIS7 的に元々用意されてる方法論もあるからそれ書きます。まずはさらっと。
反響みてもっとこってりと。

●AppCmd.exe 「バッチ ファイル好きな IT 運用者向き」

まあ有名どころだし、IIS7+ARR+URLRewrite を使った今ホットなキャッシュサーバー構築作戦でもまずはこれを採用しています。

理由: AppCmdのパラメーターに不備があった場合にエラーを返してくれるから。

今回も社内の手順に載せているのは IIS7.0 の時に出た Administration Pack に入っている構成エディターによるスクリプト生成。Windows 7 や Windows Server 2008 R2 であれば IIS の既定インストールで入る。入力しんどいけど、最初のバッチ ファイルのひな形を作るには便利。あとはバッチ ファイルに入ったAppCmd のパラメーターをごにょごにょすればよい。

image

appcmd.exe set config xxxxxxxx ですね。ポイントはこのパラメーターなところ。
applicationHost.config って階層構造なわけで、子供の階層でコレクションあったりするのにこのコマンドの書き方はちょっと癖がある。

それから Azure のスタートアップに使う時はフルパスで。
%Windir%\system32\inetsrv\appcmd.exe xxxxxxxxx

●.js とか .vbs 「スクリプト好きに」

まあ WMI 使うんでしょ。そうかもね。

こっちかな。構成エディターはこっちね。 'Microsoft.ApplicationHost.WritableAdminManager'

image

●C# 「きっちりやりたいプログラミング ラブな人向け」

System.Configuration だっけ? 昔 松崎が一緒にセミナー回ってたらやってたなぁ こんなん
色々あるけど、IIS の構成専用なのは MWA。

image

●PowerShell 「きっちり管理したい人向け」

Windows PowerShell の方が管理スクリプトとしてははるかに優れてるけど、AppCmd 開発された時にまだ無かったのよね。
だから残念だけど。なので、構成エディターにも組み込まれてないわけ。

でもちゃんと専用のコマンドあるよん。*-WebConfiguration と *-WebConfigurationProperty。

https://learn.iis.net/page.aspx/437

あたり。動詞に Remove とか Clear もあるのが素敵なの。

当然コマンドレット書いておけば色々なことができる。
Steve Marx も Azure での PowerShell 実行についても書いてるよね。

これの難点。ExecutionPolicy のセットや何気に Azure でサイレントでやるには色々と配慮がいる。でもこれが一番汎用的なので、一度スタートアップにかませるのに慣れたら一番融通が効きそう。

●他の方法論

まあテキスト操作する関数あればなんでもイケるっちゃあイケるし、DOMっていうのもありでしょう。
ここは皆さんのノウハウのままイケるところでしょう。


さて、ここまでの問題点。

.config 系のファイルの辛いところ。それは同じセクションが散らばってかかれている可能性があること、それから基本的に上記の方法論は「追加」が基本であってクリーニングは意識していないこと。クリーニングを先にしないといけないのでそこは意識して盛り込まないとダメ。でも <location> 使われると散らばっているので本当にキレイにやりたいのであれば全部チェックが必要になっちゃう。

追加行の最初に <clean /> を入れるのも一つの手でしょうねぇ。でもちょっとなぁ という声もちらほら。

IT プロな見地で言えば、構成変更=バックアップが必要 なので、私からすれば

appcmd add backup 任意

なわけです。何かをするならとにかく。

ほんでもって管理用のスクリプトなんだから PowerShell でしょ やっぱ。
複雑にしたきゃコマンドレットを書くということで。

これが私の所感でございます。(^^)/