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); }
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 { } }
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); } }
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(); } }
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); } } }
public EditConfigEntry() { InitializeComponent(); WmiIConfigEntry = new WMIConfigEntry(); }
//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")); }
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; }
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"); // } //} }