none
Formatting a WQL Output in C# RRS feed

  • Allgemeine Diskussion

  • Hallo zusammen,

    ich würde gern die Ausgabe einer WQL-Query gegen einen SCCM-Server formatieren.
    Das Ganze wird durch einen Button in Windows Forms ausgelöst. Das Resultat ist richtig, nur wird in der Ausgabe "zuviel" angezeigt.

    Der Code sieht wie folgt aus:

    private void ChkBtn_Click(object sender, EventArgs e)
            {
                string computerName = PCDropDown.Text;
                lBox.Items.Clear();
    
                SmsNamedValuesDictionary namedValues = new SmsNamedValuesDictionary();
                WqlConnectionManager connection = new WqlConnectionManager(namedValues);
                // Connect to remote computer.
                try
                {
                    connection.Connect(PrimarySiteServer.ToString());
    
                    // Set the query.
                    string query1 = "Select Name From SMS_R_System Where Name like '" + "%" + computerName + "%" + "'";
                    string query2 = string.Format("Select * From SMS_UserMachineRelationship WHERE ResourceName like '" + "%" + computerName + "%" + "' AND IsActive = '1' AND Types = '1'");
    
    
                    // Get the query results
                    IResultObject queryResults = connection.QueryProcessor.ExecuteQuery(query1);
    
                    // Check for results and display in infobox
                    bool resultsFound = false;
                    foreach (IResultObject queryResult in queryResults)
                    {
                        resultsFound = true;
                        lBox.Items.Add("Rechner ist vorhanden");
                        string MaschineResult = queryResult.ToString().Replace("instance of SMS_R_System{Name = ", "")
                                                                      .Replace(";};", "").Trim('"');
    
                        PCDropDown.Items.Add(MaschineResult);
                    }
                    if (resultsFound == false)
                    {
                        lBox.Items.Add("Rechnername nicht gefunden");
                    }
                }
                catch
                {
                    MessageBox.Show("No Connection to Config-Manager - Als ZZA ausgeführt? SCCM-Servername richtig?");
                }
            }

    Die Ausgabe ist dann zum Beispiel wie Folgt:

    instance of SMS_R_System{  Name = "SCCM01";};

    Wir hätten gern nur das SCCM01 in der Ausgabe.

    Danke für einen Tipp  im Voraus.

    Gruß,

    Christoph


    Donnerstag, 9. November 2017 17:59

Alle Antworten

  • Hallo Christoph,

    instance of SMS_R_System{  Name = "SCCM01";};

    In der Ausgabe gibt es Leerzeichen zwischen der geschweiften Klammer und dem Namen im Unterschied zum ersten Parameter der Replace-Methode. Wenn die Anzahl der Leerzeichen nach der geschweiften Klammer nicht bekannt ist, könnte ein zusätzliches Trim von Nutzen sein:

    string MaschineResult = queryResult.ToString().Replace("instance of SMS_R_System{", "").Trim().Replace("Name = ", "").Replace(";};", "").Trim('"');

    Gruß,
    Dimitar


    Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    Freitag, 10. November 2017 17:54
    Administrator