refactorsaurusrex
5/30/2015 - 7:21 PM

Lists all currently running IIS applications, along with their app pool names and process ids.

Lists all currently running IIS applications, along with their app pool names and process ids.

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ListAllWebApps
{
	class Program
	{
		static bool processFound;

		static void Main(string[] args)
		{
			while (true)
			{
				Console.Clear();
				Console.ResetColor();
				CheckForRunningWebApps();
				Console.WriteLine();
				Console.ForegroundColor = ConsoleColor.Yellow;
				Console.WriteLine("Please Esc to close or any other key to refresh...");
				ConsoleKeyInfo key = Console.ReadKey(true);

				if (key.Key == ConsoleKey.Escape)
					break;
			}
		}

		static void CheckForRunningWebApps()
		{
			var process = new Process
			{
				StartInfo = new ProcessStartInfo
				{
					FileName = @"C:\Windows\System32\inetsrv\appcmd.exe",
					Arguments = "list wps",
					UseShellExecute = false,
					RedirectStandardOutput = true,
					CreateNoWindow = true,
				}
			};

			process.OutputDataReceived += process_OutputDataReceived;
			process.Start();
			process.BeginOutputReadLine();
			process.WaitForExit();

			if (!processFound)
				Console.WriteLine("No IIS processes are currently running.");
		}

		static void process_OutputDataReceived(object sender, DataReceivedEventArgs e)
		{
			processFound = true;
			Console.WriteLine(e.Data);
		}
	}
}