構成エディターの使用: スクリプトを生成する
投稿者: Crystal Hoyer
チュートリアルの目標
このチュートリアルでは、アプリケーション プールの生成を例にして、構成エディターのスクリプト生成機能を使用する方法を示します。
前提条件
このチュートリアルでは、次の前提条件が必要です。
パート 1 – 構成エディターを使用してアプリケーション プールを作成する
サーバー接続から [構成エディター] 機能をダブルクリックし、IIS マネージャーで構成エディターを起動します。
[セクション:] ドロップダウン メニューで [system.applicationHost]、[applicationPools] の順にクリックします。
下に表示されているプロパティ グリッドで、最初の行の省略記号 "…" をクリックします。これは [(コレクション)] 項目に対応しています。
[コレクション エディター] に、既に存在するアプリケーション プールの一覧が表示されます。
[操作] ペインの [追加] をクリックします。
[プロパティ] セクションに表示されているプロパティ グリッドに入力します。
- "name" プロパティのシンボル内にキーがあることに注意してください。 これは必須フィールドであることを示します。 名前に「applicationPool1」と入力し、新しいアプリケーション プールを作成します。
- 展開する processModel を選択します。
- userName を "PoolId1" に設定します
- パスワードを "PoolId1Pwd" に設定します
- identityType を "SpecificUser" に変更します
- 必要に応じて、ここで他の設定を変更できます
[省略可能] 構成システムに対する変更をコミットするには、[アクション] ペインの [適用] をクリックします。 ただし、チュートリアルの目的上、それは行わないでください。
パート 2 – スクリプトを生成する
プロパティ ダイアログを閉じた後、[アクション] ペインの [スクリプトの生成] リンクをクリックします。 スクリプト ダイアログの 3 つのタブには、このセクションで実行したアクションを実行するための 3 種類のスクリプトが表示されます。
マネージド コード: ‘applicationPool1' を作成するための C# コード スニペット
using System;
using Microsoft.Web.Administration;
internal static class Sample {
private static void Main() {
ServerManager serverManager = new ServerManager();
Configuration config = serverManager.GetApplicationHostConfiguration();
ConfigurationSection applicationPoolsSection = config.GetSection("system.applicationHost/applicationPools");
ConfigurationElementCollection applicationPoolsCollection = applicationPoolsSection.GetCollection();
ConfigurationElement addElement = applicationPoolsCollection.CreateElement("add");
addElement["name"] = @"applicationPool1";
ConfigurationElement processModelElement = addElement.ChildElements["processModel"];
processModelElement["identityType"] = @"SpecificUser";
processModelElement["userName"] = @"PoolId1";
processModelElement["password"] = @"PoolId1Pwd";
applicationPoolsCollection.Add(addElement);
serverManager.CommitChanges();
}
}
スクリプト: ‘applicationPool1' を作成するための Jscript コード
var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";
var applicationPoolsSection = adminManager.GetAdminSection("system.applicationHost/applicationPools", "MACHINE/WEBROOT/APPHOST");
var applicationPoolsCollection = applicationPoolsSection.Collection;
var addElement = applicationPoolsCollection.CreateNewElement("add");
addElement.Properties.Item("name").Value = "applicationPool1";
var processModelElement = addElement.ChildElements.Item("processModel");
processModelElement.Properties.Item("identityType").Value = "SpecificUser";
processModelElement.Properties.Item("userName").Value = "PoolId1";
processModelElement.Properties.Item("password").Value = "PoolId1Pwd";
applicationPoolsCollection.AddElement(addElement);
adminManager.CommitChanges();
コマンド ライン: 'applicationPool1' を作成し、ID を指定するための Appcmd コマンド。
appcmd.exe set config -section:system.applicationHost/applicationPools /+".[name='applicationPool1']" /commit:apphost
appcmd.exe set config -section:system.applicationHost/applicationPools /.[name='applicationPool1'].processModel.identityType:"SpecificUser" /.[name='applicationPool1'].processModel.userName:"PoolId1" /.[name='applicationPool1'].processModel.password:"PoolId1Pwd" /commit:apphost
パート 3 – 10 個のアプリケーション プールを作成する C# プログラムを作成する
構成エディターによって生成されたコードに基づき、コードをリファクタリングし、メソッド "CreateApplicationPool" に 1 つのアプリケーション プールを作成します。 最終的なファイルは次のようになります。
using System;
using Microsoft.Web.Administration;
internal static class Sample {
private static void Main() {
ServerManager serverManager = new ServerManager();
Configuration config = serverManager.GetApplicationHostConfiguration();
ConfigurationSection applicationPoolsSection = config.GetSection("system.applicationHost/applicationPools");
ConfigurationElementCollection applicationPoolsCollection = applicationPoolsSection.GetCollection();
for (int i = 0; i < 10; i++) {
CreateApplicationPool(applicationPoolsCollection,
"AppPool" + i.ToString(),
"AppPoolId" + i.ToString(),
"AppPoolPwd" + i.ToString());
}
serverManager.CommitChanges();
}
private static void CreateApplicationPool(ConfigurationSection applicationPoolsSection,
string appPoolName,
string appPoolUserName,
string appPoolPassword)
{
ConfigurationElement addElement = applicationPoolsCollection.CreateElement("add");
addElement["name"] = appPoolName;
ConfigurationElement processModelElement = addElement.ChildElements["processModel"];
processModelElement["identityType"] = @"SpecificUser";
processModelElement["userName"] = appPoolUserName;
processModelElement["password"] = appPoolPassword;
applicationPoolsCollection.Add(addElement);
}
}
まとめ
これで、構成エディターを使用して 10 個のアプリケーション プールを作成するコードが作成されました。