Пример #1
0
        private string GetQIValue(ListViewItem lvi, WMIConfigEntry wmiConfigEntry)
        {
            string results = "";

            try
            {
                object        value        = wmiConfigEntry.RunQuery();
                MonitorStates currentstate = wmiConfigEntry.GetState(value);

                results = FormatUtils.N(value, "[null]");
                if (currentstate == MonitorStates.Error)
                {
                    lvi.ImageIndex = 3;
                }
                else if (currentstate == MonitorStates.Warning)
                {
                    lvi.ImageIndex = 2;
                }
                else
                {
                    lvi.ImageIndex = 1;
                }
            }
            catch (Exception ex)
            {
                results = ex.Message;
            }
            return(results);
        }
Пример #2
0
        private void lblColumnNameSequence_DoubleClick(object sender, EventArgs e)
        {
            try
            {
                WMIConfigEntry tmpWMIConfig = new WMIConfigEntry();
                tmpWMIConfig.Name                = txtName.Text;
                tmpWMIConfig.Namespace           = txtNamespace.Text;
                tmpWMIConfig.Machinename         = txtMachines.Text;
                tmpWMIConfig.StateQuery          = txtStateQuery.Text;
                tmpWMIConfig.ReturnValueIsInt    = chkIsReturnValueInt.Checked;
                tmpWMIConfig.ReturnValueInverted = !chkReturnValueNotInverted.Checked;
                tmpWMIConfig.UseRowCountAsValue  = chkUseRowCountAsValue.Checked;
                tmpWMIConfig.SuccessValue        = cboSuccessValue.Text;
                tmpWMIConfig.WarningValue        = cboWarningValue.Text;
                tmpWMIConfig.ErrorValue          = cboErrorValue.Text;
                tmpWMIConfig.DetailQuery         = txtDetailQuery.Text;
                tmpWMIConfig.ColumnNames         = txtColumnNames.Text.ToListFromCSVString();
                // tmpWMIConfig.KeyColumn = (int)keyColumnNumericUpDown.Value;

                List <DataColumn> columns = tmpWMIConfig.GetDetailQueryColumns();
                txtColumnNames.Text = "";
                columns.ForEach(c => txtColumnNames.Text += c.ColumnName + ", ");
                txtColumnNames.Text = txtColumnNames.Text.TrimEnd(' ', ',');
            }
            catch { }
        }
Пример #3
0
        private void ReadOldConfig(XmlElement root)
        {
            XmlNode wmiNode = root.SelectSingleNode("wmi");

            if (wmiNode != null)
            {
                WMIConfigEntry entry = new WMIConfigEntry();
                entry.Name      = "Previous version entry";
                entry.Namespace = wmiNode.ReadXmlElementAttr("namespace", "root\\CIMV2");

                try
                {
                    entry.Machinename = wmiNode.ReadXmlElementAttr("machineName", ".");
                    if (entry.Machinename == ".")
                    {
                        string machineNames = wmiNode.ReadXmlElementAttr("machines", "."); //old node
                        entry.Machinename = machineNames.ToListFromCSVString(true)[0];
                    }
                }
                catch
                {
                    entry.Machinename = ".";
                }

                XmlNode stateQueryNode = root.SelectSingleNode("wmi/stateQuery");
                entry.StateQuery          = stateQueryNode.ReadXmlElementAttr("syntax", "");
                entry.ReturnValueIsInt    = bool.Parse(stateQueryNode.ReadXmlElementAttr("returnValueIsInt", "True"));
                entry.ReturnValueInverted = bool.Parse(stateQueryNode.ReadXmlElementAttr("returnValueInverted", "False"));
                entry.WarningValue        = stateQueryNode.ReadXmlElementAttr("warningValue", "0");
                entry.ErrorValue          = stateQueryNode.ReadXmlElementAttr("errorValue", "0");
                entry.SuccessValue        = stateQueryNode.ReadXmlElementAttr("successValue", "[any]");
                entry.UseRowCountAsValue  = bool.Parse(stateQueryNode.ReadXmlElementAttr("useRowCountAsValue", "True"));

                XmlNode detailQueryNode = root.SelectSingleNode("wmi/detailQuery");
                entry.DetailQuery = detailQueryNode.ReadXmlElementAttr("syntax", "");
                string columns = detailQueryNode.ReadXmlElementAttr("columnNames", "");
                entry.ColumnNames = new List <string>();
                if (columns.Length > 0 && columns.IndexOf(',') > -1)
                {
                    entry.ColumnNames = columns.ToListFromCSVString();
                }
                else if (columns.Length > 0)
                {
                    entry.ColumnNames.Add(columns);
                }

                Entries.Add(entry);
            }
        }
Пример #4
0
 private void cmdOK_Click(object sender, EventArgs e)
 {
     if (CheckOKEnabled())
     {
         WmiConfig         = new WMIConfig();
         WmiConfig.Entries = new List <WMIConfigEntry>();
         foreach (ListViewItem lvi in lvwQueries.Items)
         {
             WMIConfigEntry wmiConfigEntry = (WMIConfigEntry)lvi.Tag;
             WmiConfig.Entries.Add(wmiConfigEntry);
         }
         DialogResult = System.Windows.Forms.DialogResult.OK;
         Close();
     }
 }
Пример #5
0
        private void cmdTestDB_Click(object sender, EventArgs e)
        {
            if (DoValidate())
            {
                string lastStep          = "Initialize values";
                string columnWarningText = "";
                try
                {
                    WMIConfigEntry tmpWMIConfig = new WMIConfigEntry();
                    tmpWMIConfig.Name                = txtName.Text;
                    tmpWMIConfig.Namespace           = txtNamespace.Text;
                    tmpWMIConfig.Machinename         = txtMachines.Text;
                    tmpWMIConfig.StateQuery          = txtStateQuery.Text;
                    tmpWMIConfig.ReturnValueIsInt    = chkIsReturnValueInt.Checked;
                    tmpWMIConfig.ReturnValueInverted = !chkReturnValueNotInverted.Checked;
                    tmpWMIConfig.UseRowCountAsValue  = chkUseRowCountAsValue.Checked;
                    tmpWMIConfig.SuccessValue        = cboSuccessValue.Text;
                    tmpWMIConfig.WarningValue        = cboWarningValue.Text;
                    tmpWMIConfig.ErrorValue          = cboErrorValue.Text;
                    tmpWMIConfig.DetailQuery         = txtDetailQuery.Text;
                    tmpWMIConfig.ColumnNames         = txtColumnNames.Text.ToListFromCSVString();

                    //tmpWMIConfig.KeyColumn = (int)keyColumnNumericUpDown.Value;

                    object returnValue = null;
                    if (tmpWMIConfig.UseRowCountAsValue)
                    {
                        lastStep    = "Run summary query (row count as value)";
                        returnValue = tmpWMIConfig.RunQueryWithCountResult();
                    }
                    else
                    {
                        lastStep = "Run summary query";
                        if (returnValue.IsIntegerTypeNumber())
                        {
                            object currentValue = null;
                            currentValue = tmpWMIConfig.RunQueryWithSingleResult();
                            if (currentValue.IsNumber())
                            {
                                returnValue = (decimal)currentValue;
                            }
                            else
                            {
                                throw new Exception(string.Format("Return value is not an integer!\r\nValue returned: {0}", returnValue));
                            }
                        }
                        else
                        {
                            returnValue = tmpWMIConfig.RunQueryWithSingleResult();
                        }
                    }

                    if (tmpWMIConfig.ReturnValueIsInt)
                    {
                        lastStep = "Test return value is an Integer";
                        if (!returnValue.IsIntegerTypeNumber())
                        {
                            throw new Exception(string.Format("Return value is not an integer!\r\nValue returned: {0}", returnValue));
                        }
                    }
                    //testing detail query
                    lastStep = "Testing detail query - Getting column names";
                    List <DataColumn> columns = tmpWMIConfig.GetDetailQueryColumns();
                    lastStep = "Testing detail query - Custom column name sequence check";
                    StringBuilder sbColumns = new StringBuilder();
                    for (int i = 1; i < columns.Count; i++)
                    {
                        sbColumns.AppendLine(columns[i].ColumnName);
                    }
                    foreach (string columnName in tmpWMIConfig.ColumnNames)
                    {
                        if ((from c in columns
                             where c.ColumnName.ToUpper() == columnName.ToUpper()
                             select c).Count() != 1)
                        {
                            columnWarningText += columnName + ", ";
                        }
                    }
                    if (chkCopyColumnNames.Checked)
                    {
                        Clipboard.SetText(sbColumns.ToString());
                    }

                    lastStep = "Testing detail query";
                    DataSet ds = tmpWMIConfig.RunDetailQuery();
                    if (columnWarningText.Length == 0)
                    {
                        MessageBox.Show(string.Format("Success!\r\nSummary value return: {0}\r\nDetail row count: {1}\r\nDetail columns: {2}", returnValue, ds.Tables[0].Rows.Count, columns.ToCSVString()), "Test", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                    else
                    {
                        MessageBox.Show(string.Format("Success (with warning)!\r\nSummary value return: {0}\r\nDetail row count: {1}\r\nDetail columns returned: {2}\r\nColumns not found: {3}", returnValue, ds.Tables[0].Rows.Count, columns.ToCSVString(), columnWarningText), "Test", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(string.Format("Failed!\r\nLast step: {0}\r\n{1}", lastStep, ex.Message), "Test", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                }
            }
        }
Пример #6
0
 public EditConfigEntry()
 {
     InitializeComponent();
     WmiIConfigEntry = new WMIConfigEntry();
 }
Пример #7
0
        //public string Namespace { get; set; }
        //public string Machinename { get; set; }
        //public string StateQuery { get; set; }
        //public bool ReturnValueIsInt { get; set; }
        //public bool ReturnValueInverted { get; set; }
        //public string WarningValue { get; set; }
        //public string ErrorValue { get; set; }
        //public string SuccessValue { get; set; }
        //public bool UseRowCountAsValue { get; set; }

        //public string DetailQuery { get; set; }
        //public List<string> ColumnNames { get; set; }
        //public int KeyColumn { get; set; }

        public void ReadConfig(XmlDocument config)
        {
            Entries = new List <WMIConfigEntry>();
            XmlElement root = config.DocumentElement;

            ReadOldConfig(root);
            foreach (XmlElement wmiQueryNode in root.SelectNodes("wmiQueries/wmiQuery"))
            {
                WMIConfigEntry entry = new WMIConfigEntry();
                entry.Namespace   = wmiQueryNode.ReadXmlElementAttr("namespace", "root\\CIMV2");
                entry.Machinename = wmiQueryNode.ReadXmlElementAttr("machineName", ".");
                entry.Name        = wmiQueryNode.ReadXmlElementAttr("name", entry.Machinename);
                XmlNode stateQueryNode = wmiQueryNode.SelectSingleNode("stateQuery");
                entry.StateQuery          = stateQueryNode.ReadXmlElementAttr("syntax", "");
                entry.ReturnValueIsInt    = bool.Parse(stateQueryNode.ReadXmlElementAttr("returnValueIsInt", "True"));
                entry.ReturnValueInverted = bool.Parse(stateQueryNode.ReadXmlElementAttr("returnValueInverted", "False"));
                entry.WarningValue        = stateQueryNode.ReadXmlElementAttr("warningValue", "0");
                entry.ErrorValue          = stateQueryNode.ReadXmlElementAttr("errorValue", "0");
                entry.SuccessValue        = stateQueryNode.ReadXmlElementAttr("successValue", "[any]");
                entry.UseRowCountAsValue  = bool.Parse(stateQueryNode.ReadXmlElementAttr("useRowCountAsValue", "True"));
                XmlNode detailQueryNode = wmiQueryNode.SelectSingleNode("detailQuery");
                entry.DetailQuery = detailQueryNode.ReadXmlElementAttr("syntax", "");
                string columns = detailQueryNode.ReadXmlElementAttr("columnNames", "");
                entry.ColumnNames = new List <string>();
                if (columns.Length > 0 && columns.IndexOf(',') > -1)
                {
                    entry.ColumnNames = columns.ToListFromCSVString();
                }
                else if (columns.Length > 0)
                {
                    entry.ColumnNames.Add(columns);
                }
                Entries.Add(entry);
            }
            //XmlNode wmiNode = root.SelectSingleNode("wmi");
            //Namespace = wmiNode.ReadXmlElementAttr("namespace", "root\\CIMV2");

            //try
            //{
            //    Machinename = wmiNode.ReadXmlElementAttr("machineName", ".");
            //    if (Machinename == ".")
            //    {
            //        string machineNames = wmiNode.ReadXmlElementAttr("machines", "."); //old node
            //        Machinename = machineNames.ToListFromCSVString(true)[0];
            //    }
            //}
            //catch
            //{
            //    Machinename = ".";
            //}

            //XmlNode stateQueryNode = root.SelectSingleNode("wmi/stateQuery");
            //StateQuery = stateQueryNode.ReadXmlElementAttr("syntax", "");
            //ReturnValueIsInt = bool.Parse(stateQueryNode.ReadXmlElementAttr("returnValueIsInt", "True"));
            //ReturnValueInverted = bool.Parse(stateQueryNode.ReadXmlElementAttr("returnValueInverted", "False"));
            //WarningValue = stateQueryNode.ReadXmlElementAttr("warningValue", "0");
            //ErrorValue = stateQueryNode.ReadXmlElementAttr("errorValue", "0");
            //SuccessValue = stateQueryNode.ReadXmlElementAttr("successValue", "[any]");
            //UseRowCountAsValue = bool.Parse(stateQueryNode.ReadXmlElementAttr("useRowCountAsValue", "True"));

            //XmlNode detailQueryNode = root.SelectSingleNode("wmi/detailQuery");
            //DetailQuery = detailQueryNode.ReadXmlElementAttr("syntax", "");
            //string columns = detailQueryNode.ReadXmlElementAttr("columnNames", "");
            //ColumnNames = new List<string>();
            //if (columns.Length > 0 && columns.IndexOf(',') > -1)
            //    ColumnNames = columns.ToListFromCSVString();
            //else if (columns.Length > 0)
            //    ColumnNames.Add(columns);
            ////KeyColumn = int.Parse(detailQueryNode.ReadXmlElementAttr("keyColumn", "0"));
        }
Пример #8
0
        private void LoadDetailView()
        {
            lvwDetails.BeginUpdate();
            lvwDetails.Items.Clear();
            lvwDetails.Columns.Clear();
            if (lvwResults.SelectedItems.Count == 1 && lvwResults.SelectedItems[0].Tag is WMIConfigEntry)
            {
                WMIConfigEntry wmiConfigEntry = (WMIConfigEntry)lvwResults.SelectedItems[0].Tag;
                try
                {
                    Cursor.Current = Cursors.WaitCursor;
                    DataSet ds = wmiConfigEntry.RunDetailQuery();
                    if (wmiConfigEntry.ColumnNames == null || wmiConfigEntry.ColumnNames.Count == 0)
                    {
                        foreach (DataColumn currentDataColumn in ds.Tables[0].Columns)
                        {
                            ColumnHeader newColumn = new ColumnHeader();
                            newColumn.Tag  = currentDataColumn;
                            newColumn.Text = currentDataColumn.Caption;

                            if ((currentDataColumn.DataType == typeof(UInt64)) || (currentDataColumn.DataType == typeof(UInt32)) || (currentDataColumn.DataType == typeof(UInt16)) ||
                                (currentDataColumn.DataType == typeof(Int64)) || (currentDataColumn.DataType == typeof(Int32)) || (currentDataColumn.DataType == typeof(Int16)))
                            {
                                newColumn.TextAlign = HorizontalAlignment.Right;
                            }
                            else
                            {
                                newColumn.TextAlign = HorizontalAlignment.Left;
                            }
                            lvwDetails.Columns.Add(newColumn);
                        }
                        foreach (DataRow r in ds.Tables[0].Rows)
                        {
                            ListViewItem lvi = new ListViewItem(FormatUtils.N(r[0], "[Null]"));
                            for (int i = 1; i < lvwDetails.Columns.Count; i++)
                            {
                                lvi.SubItems.Add(FormatUtils.N(r[i], "[Null]"));
                            }
                            lvwDetails.Items.Add(lvi);
                        }
                    }
                    else
                    {
                        foreach (string colname in wmiConfigEntry.ColumnNames)
                        {
                            ColumnHeader newColumn = new ColumnHeader();
                            newColumn.Text = colname;
                            lvwDetails.Columns.Add(newColumn);
                        }
                        foreach (DataRow r in ds.Tables[0].Rows)
                        {
                            string       firstColumnName = wmiConfigEntry.ColumnNames[0];
                            ListViewItem lvi             = new ListViewItem(AttemptFieldRead(r, firstColumnName));
                            for (int i = 1; i < wmiConfigEntry.ColumnNames.Count; i++)
                            {
                                lvi.SubItems.Add(AttemptFieldRead(r, wmiConfigEntry.ColumnNames[i]));
                            }
                            lvwDetails.Items.Add(lvi);
                        }
                    }
                    lvwDetails.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message, "View details", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                finally
                {
                    Cursor.Current = Cursors.Default;
                }
            }
            lvwDetails.EndUpdate();
            exportToolStripButton.Enabled = lvwResults.SelectedItems.Count > 0;
        }
Пример #9
0
        private void RefreshList()
        {
            try
            {
                lvwResults.BeginUpdate();
                Cursor.Current = Cursors.WaitCursor;
                foreach (ListViewItem lvi in lvwResults.Items)
                {
                    WMIConfigEntry wmiConfigEntry = (WMIConfigEntry)lvi.Tag;
                    lvi.SubItems[1].Text = GetQIValue(lvi, wmiConfigEntry);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Refresh", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            finally
            {
                Cursor.Current = Cursors.Default;
                lvwResults.EndUpdate();
            }
            LoadDetailView();

            //if (WmiConfig != null)
            //{
            //    try
            //    {
            //        foreach (ListViewItem lvi in lvwResults.Items)
            //        {
            //            WMIConfigEntry wmiConfigEntry = (WMIConfigEntry)lvi.Tag;
            //            lvi.SubItems[1].Text = GetQIValue(lvi, wmiConfigEntry);
            //        }

            //        DataSet data = WmiConfig.RunDetailQuery();

            //        lvwResults.BeginUpdate();
            //        lvwResults.Items.Clear();
            //        if (data != null && data.Tables.Count > 0 && lvwResults.Columns.Count > 0)
            //        {
            //            foreach (DataRow r in data.Tables[0].Rows)
            //            {
            //                ListViewItem lvi = new ListViewItem();
            //                lvi.Text = r[lvwResults.Columns[0].Text].ToString();
            //                for (int i = 1; i < lvwResults.Columns.Count; i++)
            //                {
            //                    ColumnHeader columnHeader = lvwResults.Columns[i];
            //                    lvi.SubItems.Add(r[columnHeader.Text].ToString());
            //                }
            //                lvwResults.Items.Add(lvi);
            //            }
            //        }
            //    }
            //    catch (Exception ex)
            //    {
            //        MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            //    }
            //    finally
            //    {
            //        lvwResults.EndUpdate();
            //        toolStripStatusLabel1.Text = "Last updated " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
            //    }
            //}
        }