5

PowerShell では、既存の IIS 7 アプリケーション プールを新しいアプリケーション プールに複製し、すべてのソース プール設定を新しいプールに保持できます。このような...

import-module webadministration
copy IIS:\AppPools\AppPoolTemplate IIS:\AppPools\NewAppPool -force

ここで、Microsoft.Web.Administration 名前空間のクラスを使用して、C# で同じことを行いたいと考えています。名前空間を参照しましたが、これを簡単に行う方法が見つかりません。既存のアプリ プールの浅いコピーを作成するために呼び出すことができる MemberwiseClone メソッドがありますが、それが元のアプリ プールのすべてのプロパティを複製するかどうかはわかりません。

誰でも助けることができますか?

4

2 に答える 2

1

コピー方法についてはわかりませんが、現在のアプリ プールのプロパティにアクセスして、同じプロパティで新しいアプリ プールを作成できます。

// How to access a specific app pool
DirectoryEntry appPools = new DirectoryEntry("IIS://" + serverName + "/w3svc/apppools", adminUsername, adminPassword);
foreach (DirectoryEntry AppPool in appPools.Children)
{
    if (appPoolName.Equals(AppPool.Name, StringComparison.OrdinalIgnoreCase))
    {
        // access the properties of AppPool...
    }
}

次に、以下にリストされているメソッドを呼び出して、コード内に新しいプールを作成します。

CreateAppPool("IIS://Localhost/W3SVC/AppPools", "MyAppPool");

MSDNからのアプリケーション プールの作成方法:

static void CreateAppPool(string metabasePath, string appPoolName)
{
    //  metabasePath is of the form "IIS://<servername>/W3SVC/AppPools"
    //    for example "IIS://localhost/W3SVC/AppPools" 
    //  appPoolName is of the form "<name>", for example, "MyAppPool"
    Console.WriteLine("\nCreating application pool named {0}/{1}:", metabasePath, appPoolName);

    try
    {
        if (metabasePath.EndsWith("/W3SVC/AppPools"))
        {
            DirectoryEntry apppools = new DirectoryEntry(metabasePath);
            DirectoryEntry newpool = apppools.Children.Add(appPoolName, "IIsApplicationPool");
            newpool.CommitChanges();
        }
        else
        {
            Console.WriteLine(" Failed in CreateAppPool; application pools can only be created in the */W3SVC/AppPools node.");
        }
    }
    catch (Exception ex)
    {
        Console.WriteLine("Failed in CreateAppPool with the following exception: \n{0}", ex.Message);
    }
}
于 2012-09-28T12:04:29.430 に答える