/// <summary>
        /// Wmi query for IIsApplicationPool object.
        /// </summary>
        /// <param name="name">The AppPool name.</param>
        /// <param name="machineName">The server on which the AppPool is running.</param>
        /// <param name="millisecondsTimeout">Timeout value on ManagementOptions object.</param>
        /// <param name="options"></param>
        /// <returns>The Wmi AppPool ManagementObject</returns>
        static ManagementObject GetAppPoolManagementObject(string name, string machineName, int millisecondsTimeout, ref ManagementOptions options)
        {
            IisAppPoolUtilWmiHelper helper  = new IisAppPoolUtilWmiHelper(machineName);
            ManagementObject        appPool = helper.CreateManagementObject("IIsApplicationPool");

            appPool.Properties["Name"].Value = string.Format("W3SVC/AppPools/{0}", name);
            options.Timeout = System.TimeSpan.FromMinutes(Convert.ToDouble(millisecondsTimeout));

            return(appPool);
        }
        /// <summary>
        /// Creates a new AppPool.
        /// </summary>
        /// <param name="name">The AppPool name.</param>
        /// <param name="machineName">The server on which the AppPool will be created.</param>
        /// <param name="millisecondsTimeout">Timeout value on wait for Create to complete.</param>
        /// <returns>The Wmi ManagementPath</returns>
        public static ManagementPath Create(string name, string machineName, int millisecondsTimeout)
        {
            PutOptions options = new PutOptions();

            options.Timeout = System.TimeSpan.FromMinutes(Convert.ToDouble(millisecondsTimeout));

            IisAppPoolUtilWmiHelper helper  = new IisAppPoolUtilWmiHelper(machineName);
            ManagementObject        appPool = helper.CreateManagementObject("IIsApplicationPoolSetting");

            appPool.Properties["Name"].Value = string.Format("W3SVC/AppPools/{0}", name);
            appPool.Properties["AppPoolIdentityType"].Value   = 3;
            appPool.Properties["ManagedRuntimeVersion"].Value = "v4.0";

            return(appPool.Put(options));
        }