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\enumwebappWebSite: Default Web Site / (DefaultAppPool) /vdir (DefaultAppPool)>
尚、これと同様のことは appcmd コマンドでも実行可能です。
> appcmd list APP APP "Default Web Site/" (applicationPool:DefaultAppPool) APP "Default Web Site/vdir" (applicationPool:DefaultAppPool)