Web アプリケーションを列挙する方法

マネージド コード API を使って、全ての Web サイトの Web アプリケーションを列挙する方法を示します。

Microsoft.Web.Administration 名前空間の、ServerManager でサイトの情報を取得し、 それぞれのサイトに含まれるアプリケーションのコレクションを、Site クラスの Applications プロパティから取得します。

以下のコードを enumwebapp.cs として保存します。

using System;
using Microsoft.Web.Administration;


//////////////////////////////////////////////////////////////////////////


class EnumWebAppApp {

    public static void Main() {

        EnumApplications();

    }

    
    public static void EnumApplications() {

        ServerManager manager = new ServerManager();

        if ( manager.Sites.Count == 0 ) {

            Console.WriteLine ( "No WebSite" );
            return;

        }
        

        foreach( Site site in manager.Sites ) {

            Console.WriteLine ( "WebSite: {0}", site.Name );

            foreach (Application app in site.Applications) {

                Console.WriteLine( " {0}\t({1})", app.Path, app.ApplicationPoolName );

            }

        }

    }

}

以下の内容を makefile として保存します。

CSC = csc.exe
TARGETNAME=enumwebapp
SOURCE_FILE=enumwebapp.cs
REF=/r:$(SYSTEMROOT)\System32\inetsrv\Microsoft.Web.Administration.dll

OUTDIR=.\chk

all: "$(OUTDIR)\$(TARGETNAME).exe"

clean:
	-del *.xml *.pdb

cleanall:clean
	-del $(OUTDIR)\$(TARGETNAME).exe


"$(OUTDIR)" :
    @if not exist "$(OUTDIR)" mkdir "$(OUTDIR)"


CSC_OPT=\
	/nologo\
	/target:exe\
	/out:$(OUTDIR)\$(TARGETNAME).exe\
	/doc:$(OUTDIR)\$(TARGETNAME).xml\
	/debug+\
	/debug:full\
	/optimize-\
	/warn:4


$(OUTDIR)\$(TARGETNAME).exe: "$(OUTDIR)" $(SOURCE_FILE)
	$(CSC) $(CSC_OPT) $(REF) $(SOURCE_FILE)

上記を nmake でビルドします。下記がビルドとプログラムの実行結果です。

> nmake -a

Microsoft (R) Program Maintenance Utility Version 9.00.30729.01
Copyright (C) Microsoft Corporation.  All rights reserved.

        csc.exe  /nologo /target:exe /out:.\chk\enumwebapp.exe 
/doc:.\chk\enumwebapp.xml /debug+ /debug:full /optimize- /warn:4 
/r:C:\Windows\System32\inetsrv\Microsoft.Web.Administration.dll enumwebapp.cs

> .\chk\enumwebapp
WebSite: Default Web Site / (DefaultAppPool) /vdir (DefaultAppPool)
>

尚、これと同様のことは appcmd コマンドでも実行可能です。

> appcmd list APP
APP "Default Web Site/" (applicationPool:DefaultAppPool)
APP "Default Web Site/vdir" (applicationPool:DefaultAppPool)

ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。

© 2024 Web/DB プログラミング徹底解説