private void lblColumnNameSequence_DoubleClick(object sender, EventArgs e) { try { WMIQueryEntry tmpWMIConfig = new WMIQueryEntry(); 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 string GetQIValue(ListViewItem lvi, WMIQueryEntry wmiConfigEntry) { string results = ""; try { object value = wmiConfigEntry.RunQuery(); CollectorState currentstate = wmiConfigEntry.GetState(value); results = FormatUtils.N(value, "[null]"); if (currentstate == CollectorState.Error) { lvi.ImageIndex = 3; } else if (currentstate == CollectorState.Warning) { lvi.ImageIndex = 2; } else { lvi.ImageIndex = 1; } } catch (Exception ex) { results = ex.Message; } return(results); }
public override void OKClicked() { if (CheckOKEnabled()) { if (SelectedConfig == null) { SelectedConfig = new WMIQueryCollectorConfig(); } WMIQueryCollectorConfig currentConfig = (WMIQueryCollectorConfig)SelectedConfig; currentConfig.Entries.Clear(); foreach (ListViewItem lvi in lvwEntries.Items) { WMIQueryEntry eventLogEntry = (WMIQueryEntry)lvi.Tag; currentConfig.Entries.Add(eventLogEntry); } DialogResult = System.Windows.Forms.DialogResult.OK; Close(); } }
private void cmdOK_Click(object sender, EventArgs e) { if (DoValidate()) { WMIQueryEntry selectedEntry; if (SelectedEntry != null) { selectedEntry = (WMIQueryEntry)SelectedEntry; } else if (SelectedWMIQueryEntry != null) { selectedEntry = (WMIQueryEntry)SelectedWMIQueryEntry; } else { selectedEntry = new WMIQueryEntry(); SelectedEntry = selectedEntry; SelectedWMIQueryEntry = selectedEntry; } selectedEntry.Name = txtName.Text; selectedEntry.Namespace = txtNamespace.Text; selectedEntry.Machinename = txtMachines.Text; selectedEntry.StateQuery = txtStateQuery.Text; selectedEntry.ReturnValueIsInt = chkIsReturnValueInt.Checked; selectedEntry.ReturnValueInverted = !chkReturnValueNotInverted.Checked; selectedEntry.UseRowCountAsValue = chkUseRowCountAsValue.Checked; selectedEntry.SuccessValue = cboSuccessValue.Text; selectedEntry.WarningValue = cboWarningValue.Text; selectedEntry.ErrorValue = cboErrorValue.Text; selectedEntry.DetailQuery = txtDetailQuery.Text; selectedEntry.ColumnNames = txtColumnNames.Text.ToListFromCSVString(); SelectedEntry = selectedEntry; SelectedWMIQueryEntry = selectedEntry; //WmiIConfig.KeyColumn = (int)keyColumnNumericUpDown.Value; DialogResult = System.Windows.Forms.DialogResult.OK; Close(); } }
//public List<WMIQueryEntry> Entries = new List<WMIQueryEntry>(); #region IAgentConfig Members public void ReadConfiguration(string configurationString) { XmlDocument config = new XmlDocument(); config.LoadXml(configurationString); Entries.Clear(); XmlElement root = config.DocumentElement; foreach (XmlElement wmiQueryNode in root.SelectNodes("wmiQueries/wmiQuery")) { WMIQueryEntry entry = new WMIQueryEntry(); 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); } }
public override void RefreshDisplayData() { try { lvwResults.BeginUpdate(); Cursor.Current = Cursors.WaitCursor; foreach (ListViewItem lvi in lvwResults.Items) { WMIQueryEntry wmiConfigEntry = (WMIQueryEntry)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(); base.RefreshDisplayData(); }
public WMIQueryCollectorEditEntry() { InitializeComponent(); SelectedWMIQueryEntry = new WMIQueryEntry(); SelectedEntry = new WMIQueryEntry(); }
private void cmdTestDB_Click(object sender, EventArgs e) { if (DoValidate()) { string lastStep = "Initialize values"; string columnWarningText = ""; try { WMIQueryEntry tmpWMIConfig = new WMIQueryEntry(); 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); } } }
private void LoadDetailView() { lvwDetails.BeginUpdate(); lvwDetails.Items.Clear(); lvwDetails.Columns.Clear(); if (lvwResults.SelectedItems.Count == 1 && lvwResults.SelectedItems[0].Tag is WMIQueryEntry) { WMIQueryEntry wmiConfigEntry = (WMIQueryEntry)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(); toolStripButtonExportData.Enabled = lvwResults.SelectedItems.Count > 0; }