アプリケーションドメインの情報を表示する方法 (IIS WMI)
アプリケーションドメインの情報を取得しよう!
IIS のアプリケーションドメインの情報取得、といっても、何のことやら意味不明だ、と思われるかもしれませんが、 ここで「アプリケーションドメインの情報を取得する」 ことは、IIS の言葉で言えば 「実行中の Web Application の情報を取得する」 ということに等しいです。
WMI プロバイダで、AppDomain というキーワードが出てるので、それをそのまま使って書いてます。
さて、アプリケーションドメインの情報は、AppDomain オブジェクトから取得可能です。
Set oWebAdmin = GetObject("winmgmts:root\WebAdministration") Set oAppDomains = oWebAdmin.ExecQuery( "SELECT * FROM AppDomain" ) For Each oAppDomain In oAppDomains WScript.Echo "Id = " + oAppDomain.Id WScript.Echo "IsIdle = " + CStr( oAppDomain.IsIdle ) WScript.Echo "PhysicalPath = " + oAppDomain.PhysicalPath WScript.Echo "ProcessId = " + CStr( oAppDomain.ProcessId ) WScript.Echo "SiteName = " + oAppDomain.SiteName WScript.Echo "ApplicationPath = " + oAppDomain.ApplicationPath Next
これは VBScript のコードですので、enumappdom.vbs などの名前で保存してください。
VBScript のコードをコマンドプロンプトで実行する時は、cscript を使います。
実行結果のサンプルは次のようになります。
> cscript test.vbs Microsoft (R) Windows Script Host Version 5.7 Copyright (C) Microsoft Corporation. All rights reserved. Id = /LM/W3SVC/1/ROOT IsIdle = False PhysicalPath = C:\wp\ ProcessId = 5272 SiteName = Default Web Site ApplicationPath = / >
ちなみに、これは現在ロードされているアプリケーションドメインの情報なので、 何も動いてない時は結果は何も表示されません。
だから、何も表示されなくても 「なんだこのコードは!」 って、怒らないでくださいね(笑)
適当に aspx を走らせてみてから、このプログラムを実行すれば何かしら情報が表示されると思います。
ちなみに、AppDomain でクエリをするのってちょっとピンとこなくないですか? この情報を取るなら、WebApplication などの名前の方がわかりやすい気がするのですが・・・。