Sdílet prostřednictvím


Vytvoření výčtu Aktualizace vyhovujících konkrétním kritériím

Toto téma vysvětluje, jak vytvořit výčet aktualizací softwaru, které splňují konkrétní kritéria v Configuration Manager, vytvořením dotazu a následným spuštěním ExecuteQuery metody QueryProcessor třídy.

Vytvoření výčtu aktualizací odpovídajících konkrétním kritériím

  1. Nastavte připojení k poskytovateli serveru SMS.

  2. Přiřaďte konkrétní dotaz k proměnné.

  3. Předejte proměnnou metodě ExecuteQuery .

Příklad

Následující ukázková metoda vytvoří výčet aktualizací, které splňují konkrétní kritéria předáním dotazu metodě ExecuteQuery .

Níže jsou znázorněny čtyři ukázkové dotazy:

  1. Dotaz, který zobrazuje aktualizace softwaru, které už byly staženy.

  2. Dotaz, který zobrazuje již nasazené aktualizace softwaru.

  3. Dotaz, který zobrazuje aktualizace softwaru, které mají určitou hodnotu závažnosti.

  4. Dotaz, který zobrazuje CI_IDs aktualizace softwaru, které jsou přidruženy ke konkrétnímu znalostní báze článku.

    Podrobné informace o vlastnostech přidružených k aktualizaci softwaru najdete v referenčním materiálu SMS_SoftwareUpdate třídy.

    Informace o volání ukázkového kódu najdete v tématu Volání Configuration Manager fragmentů kódu.


Sub EnumerateUpdatesMatchingCriteria(connection)  

    ' This query displays all updates that have already been downloaded.  
    Query1 = "Select * from SMS_SoftwareUpdate where IsContentProvisioned=1"   

    ' Run query.  
    Set ListOfResources1 = connection.ExecQuery(Query1, , wbemFlagForwardOnly Or wbemFlagReturnImmediately)  

    ' The query returns a collection that needs to be enumerated.  
    Wscript.Echo " "  
    Wscript.Echo "Update Content Is Downloaded."  
    Wscript.Echo "Query: " & Query1  
    Wscript.Echo "--------------------------------------------------------"    

    For Each Resource1 In ListOfResources1       
        Wscript.Echo "Name:       " & Resource1.LocalizedDisplayName  
        Wscript.Echo "ArticleID:  " & Resource1.ArticleID  
        Wscript.Echo "CI_ID:      " & Resource1.CI_ID  
        Wscript.Echo "Severity:   " & Resource1.SeverityName     
    Next  

    ' This query displays the updates that have already been deployed.  
    Query2 = "Select * from SMS_SoftwareUpdate where IsDeployed=1"   

    ' Run query.  
    Set ListOfResources2 = connection.ExecQuery(Query2, , wbemFlagForwardOnly Or wbemFlagReturnImmediately)  

    ' The query returns a collection that needs to be enumerated.  
    Wscript.Echo " "  
    Wscript.Echo "Updates Have Already Been Deployed."  
    Wscript.Echo "Query: " & Query2  
    Wscript.Echo "--------------------------------------------------------"    

    For Each Resource2 In ListOfResources2       
        Wscript.Echo "Name:       " & Resource2.LocalizedDisplayName  
        Wscript.Echo "ArticleID:  " & Resource2.ArticleID  
        Wscript.Echo "CI_ID:      " & Resource2.CI_ID  
        Wscript.Echo "Severity:   " & Resource2.SeverityName     
    Next  

    ' This query displays the updates that have a particular severity value.   
    Query3 = "Select * from SMS_SoftwareUpdate where SeverityName='Critical'"   

    ' Run query.  
    Set ListOfResources3 = connection.ExecQuery(Query3, , wbemFlagForwardOnly Or wbemFlagReturnImmediately)  

    ' The query returns a collection that needs to be enumerated.  
    Wscript.Echo " "  
    Wscript.Echo "Updates That Have A Particular Severity Title."  
    Wscript.Echo "Query: " & Query3  
    Wscript.Echo "--------------------------------------------------------"    

    For Each Resource3 In ListOfResources3       
        Wscript.Echo "Name:       " & Resource3.LocalizedDisplayName  
        Wscript.Echo "ArticleID:  " & Resource3.ArticleID  
        Wscript.Echo "CI_ID:      " & Resource3.CI_ID  
        Wscript.Echo "Severity:   " & Resource3.SeverityName     
    Next  

       ' This query displays software updates associated with a specific knowledge base artile.  
    Query4 = "SELECT * FROM SMS_SoftwareUpdate WHERE ArticleID='832880'"   

    ' Run query.  
    Set ListOfResources4 = connection.ExecQuery(Query4, , wbemFlagForwardOnly Or wbemFlagReturnImmediately)  

    ' The query returns a collection that needs to be enumerated.  
    Wscript.Echo " "  
    Wscript.Echo "Updates For A Specific KB Article."  
    Wscript.Echo "Query: " & Query4  
    Wscript.Echo "--------------------------------------------------------"    

    For Each Resource4 In ListOfResources4       
        Wscript.Echo "Name:       " & Resource4.LocalizedDisplayName  
        Wscript.Echo "ArticleID:  " & Resource4.ArticleID  
        Wscript.Echo "CI_ID:      " & Resource4.CI_ID  
        Wscript.Echo "Severity:   " & Resource4.SeverityName     
    Next  

End Sub  


public void EnumerateUpdatesMatchingCriteria(WqlConnectionManager connection)  
{  

    //  Note:  Query strings or variables could easily be passed in to complete the strings, but the query string  
    //         must be contructed and variables resolved prior to passing the string to the ExecuteQuery method.   

    try  
    {  

        // This query displays all updates that have already been downloaded.  
        string query1 = "Select * from SMS_SoftwareUpdate where IsContentProvisioned=1";  

        // Run query.  
        IResultObject listOfResources1 = connection.QueryProcessor.ExecuteQuery(query1);  

        // The query returns a collection that needs to be enumerated.  
        Console.WriteLine(" ");  
        Console.WriteLine("Update Content Is Downloaded.");  
        Console.WriteLine("Query: " + query1);                 
        Console.WriteLine("--------------------------------------------------------");  
        foreach (IResultObject resource1 in listOfResources1)  
        {  
            Console.WriteLine();  
            Console.WriteLine("Name:       " + resource1["LocalizedDisplayName"].StringValue);  
            Console.WriteLine("Article ID: " + resource1["ArticleID"].StringValue);  
            Console.WriteLine("CI_ID:      " + resource1["CI_ID"].IntegerValue);  
            Console.WriteLine("Severity    " + resource1["SeverityName"].StringValue);  
        }  

        // This query displays the updates that have already been deployed.  
        string query2 = "Select * from SMS_SoftwareUpdate where IsDeployed=1";  

        // Run query.  
        IResultObject listOfResources2 = connection.QueryProcessor.ExecuteQuery(query2);  

        // The query returns a collection that needs to be enumerated.  
        Console.WriteLine(" ");  
        Console.WriteLine("Updates Have Already Been Deployed.");  
        Console.WriteLine("Assignments Query: " + query2);  
        Console.WriteLine("--------------------------------------------------------");  
        foreach (IResultObject resource2 in listOfResources2)  
        {  
            Console.WriteLine();  
            Console.WriteLine("Name:       " + resource2["LocalizedDisplayName"].StringValue);  
            Console.WriteLine("Article ID: " + resource2["ArticleID"].StringValue);  
            Console.WriteLine("CI_ID:      " + resource2["CI_ID"].IntegerValue);  
            Console.WriteLine("Severity:   " + resource2["SeverityName"].StringValue);  
        }  

        // This query displays the updates that have a particular severity value.  
        string query3 = "Select * from SMS_SoftwareUpdate where SeverityName='Critical'";  

        // Run query.  
        IResultObject listOfResources3 = connection.QueryProcessor.ExecuteQuery(query3);  

        // The query returns a collection that needs to be enumerated.  
        Console.WriteLine(" ");  
        Console.WriteLine("Updates That Have A Particular Severity Title.");  
        Console.WriteLine("Query: " + query3);  
        Console.WriteLine("--------------------------------------------------------");  
        foreach (IResultObject resource3 in listOfResources3)  
        {  
            Console.WriteLine();  
            Console.WriteLine("Name:       " + resource3["LocalizedDisplayName"].StringValue);  
            Console.WriteLine("Article ID: " + resource3["ArticleID"].StringValue);  
            Console.WriteLine("CI_ID:      " + resource3["CI_ID"].IntegerValue);  
            Console.WriteLine("Severity:   " + resource3["SeverityName"].StringValue);  
        }  

        // This query displays software updates associated with a specific KB.  
        string query4 = "SELECT * FROM SMS_SoftwareUpdate WHERE ArticleID='832880'";  

        // Run query.  
        IResultObject listOfResources4 = connection.QueryProcessor.ExecuteQuery(query4);  

        // The query returns a collection that needs to be enumerated.  
        Console.WriteLine(" ");  
        Console.WriteLine("Updates For A Specific KB Article.");  
        Console.WriteLine("Query: " + query4);  
        Console.WriteLine("--------------------------------------------------------");  
        foreach (IResultObject resource4 in listOfResources4)  
        {  
            Console.WriteLine();  
            Console.WriteLine("Name:       " + resource4["LocalizedDisplayName"].StringValue);  
            Console.WriteLine("Article ID: " + resource4["ArticleID"].StringValue);  
            Console.WriteLine("CI_ID:      " + resource4["CI_ID"].IntegerValue);  
            Console.WriteLine("Severity:   " + resource4["SeverityName"].StringValue);  
        }  
    }  

    catch (SmsException ex)  
    {  
        Console.WriteLine("Failed to run queries. Error: " + ex.Message);  
        throw;  
    }  
}  

Ukázková metoda má následující parametry:

Parametr Typ Popis
connection -Spravované: WqlConnectionManager
- VBScript: SWbemServices
Platné připojení k poskytovateli serveru SMS.

Kompilace kódu

Tento příklad jazyka C# vyžaduje:

Obory názvů

Systému

System.collections.generic

System.text

Microsoft. ConfigurationManagement.ManagementProvider

Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine

Sestavení

adminui.wqlqueryengine

microsoft.configurationmanagement.managementprovider

Robustní programování

Další informace o zpracování chyb najdete v tématu Informace o chybách Configuration Manager.

Zabezpečení rozhraní .NET Framework

Další informace o zabezpečení Configuration Manager aplikací najdete v tématu Configuration Manager správa na základě rolí.

Viz také

O nasazeních aktualizací softwaru

SMS_SoftwareUpdate