public async override Task<bool> InvokeAsync(string paramList)
        {
            var initaiteBusiness = new DataInitiator(_configBusiness, _counterBusiness);
            var messages = initaiteBusiness.CreateAll();
            foreach (var message in messages)
            {
                OutputLine(message.Item1, message.Item2);
            }

            return true;
        }
        public async override Task<bool> InvokeAsync(string paramList)
        {
            var index = 0;

            var addAnother = true;
            var collectors = new List<ICounter>();

            while (addAnother)
            {
                var machineName = QueryParam("Machine", GetParam(paramList, index++), new Dictionary<string, string> { { System.Environment.MachineName, System.Environment.MachineName } });

                var categoryNames = _counterBusiness.GetCategoryNames();
                var categoryName = QueryParam("Category", GetParam(paramList, index++), categoryNames.Select(x => new KeyValuePair<string, string>(x, x)));

                var counterNames = _counterBusiness.GetCounterNames(categoryName, machineName);
                var counterName = QueryParam("Counter", GetParam(paramList, index++), counterNames.Select(x => new KeyValuePair<string, string>(x, x)));

                string instanceName = null;
                var cat = PerformanceCounterHelper.GetPerformanceCounterCategory(categoryName, machineName);

                if (cat.CategoryType == PerformanceCounterCategoryType.MultiInstance)
                {
                    var instanceNames = _counterBusiness.GetInstances(categoryName, counterName, machineName);
                    instanceName = QueryParam("Instance", GetParam(paramList, index++), instanceNames.Select(x => new KeyValuePair<string, string>(x, x)));
                }

                var fieldName = QueryParam<string>("FieldName", GetParam(paramList, index++));

                addAnother = QueryParam("Add another counter?", GetParam(paramList, index++), new Dictionary<bool, string> { { true, "Yes" }, { false, "No" } });

                var collector = new Collector.Entities.Counter(categoryName, counterName, instanceName, fieldName, null, null, null, machineName);
                collectors.Add(collector);
            }

            var groupName = QueryParam<string>("Group Name", GetParam(paramList, index++));
            var secondsInterval = QueryParam<int>("Seconds Interval", GetParam(paramList, index++));

            var refreshInstanceInterval = 0;
            if (collectors.Any(x => x.InstanceName.Contains("*") || x.InstanceName.Contains("?")))
            {
                refreshInstanceInterval = QueryParam<int>("Refresh Instance Interval", GetParam(paramList, index++));
            }

            var collectorEngineType = QueryParam("Collector Engine Type", GetParam(paramList, index++), new Dictionary<CollectorEngineType, string> { { CollectorEngineType.Safe, CollectorEngineType.Safe.ToString() }, { CollectorEngineType.Exact, CollectorEngineType.Exact.ToString() } });

            var initaiteBusiness = new DataInitiator(_configBusiness, _counterBusiness);
            var response = initaiteBusiness.CreateCounter(groupName, secondsInterval, refreshInstanceInterval, collectors, collectorEngineType);

            OutputLine(response.Item2.Item1, response.Item2.Item2);

            TestNewCounterGroup(response.Item1);

            return false;
        }
        private bool InitiateDefaultCounters()
        {
            var initaiteBusiness = new DataInitiator(_configBusiness, _counterBusiness);
            var messages = initaiteBusiness.CreateAll();
            var someIssue = false;
            foreach (var message in messages)
            {
                OutputLine(message.Item1, message.Item2);

                if (message.Item2 == OutputLevel.Error)
                {
                    someIssue = true;
                }
            }

            return !someIssue;
        }
        public async override Task<bool> InvokeAsync(string paramList)
        {
            var index = 0;

            var addAnother = true;
            var collectors = new List<ICounter>();

            while (addAnother)
            {
                var categoryNames = _counterBusiness.GetCategoryNames();
                var categoryName = QueryParam("Category", GetParam(paramList, index++), categoryNames.Select(x => new KeyValuePair<string, string>(x, x)));

                var counterNames = _counterBusiness.GetCounterNames(categoryName);
                var counterName = QueryParam("Counter", GetParam(paramList, index++), counterNames.Select(x => new KeyValuePair<string, string>(x, x)));

                string instanceName = null;
                var cat = new PerformanceCounterCategory(categoryName);
                if (cat.CategoryType == PerformanceCounterCategoryType.MultiInstance)
                {
                    var instanceNames = _counterBusiness.GetInstances(categoryName, counterName);
                    instanceName = QueryParam("Instance", GetParam(paramList, index++), instanceNames.Select(x => new KeyValuePair<string, string>(x, x)));
                }

                addAnother = QueryParam("Add another counter?", GetParam(paramList, index++), new Dictionary<bool, string> { { true, "Yes" }, { false, "No" } });

                var collector = new Collector.Entities.Counter(categoryName, counterName, instanceName);
                collectors.Add(collector);
            }

            var groupName = QueryParam<string>("Group Name", GetParam(paramList, index++));
            var secondsInterval = QueryParam<int>("Seconds Interval", GetParam(paramList, index++));

            var initaiteBusiness = new DataInitiator(_configBusiness, _counterBusiness);
            var response = initaiteBusiness.CreateCounter(groupName, secondsInterval, collectors);

            OutputLine(response.Item2.Item1, response.Item2.Item2);

            TestNewCounterGroup(response.Item1);

            return false;
        }