Jak wyliczać Aktualizacje zgodne z określonymi kryteriami
W tym temacie wyjaśniono, jak wyliczać aktualizacje oprogramowania zgodne z określonymi kryteriami w Configuration Manager, tworząc zapytanie, a następnie używając ExecuteQuery
metody QueryProcessor
klasy do uruchomienia zapytania.
Aby wyliczyć aktualizacje zgodne z określonymi kryteriami
Skonfiguruj połączenie z dostawcą programu SMS.
Przypisz określone zapytanie do zmiennej.
Przekaż zmienną do
ExecuteQuery
metody .
Przykład
Poniższa przykładowa metoda wylicza aktualizacje zgodne z określonymi kryteriami, przekazując zapytanie do ExecuteQuery
metody .
Poniżej przedstawiono cztery przykładowe zapytania:
Zapytanie, które wyświetla aktualizacje oprogramowania, które zostały już pobrane.
Zapytanie, które wyświetla aktualizacje oprogramowania, które zostały już wdrożone.
Zapytanie, które wyświetla aktualizacje oprogramowania o określonej wartości ważności.
Zapytanie, które wyświetla CI_IDs aktualizacji oprogramowania skojarzone z określonym artykułem baza wiedzy.
Szczegółowe informacje o właściwościach skojarzonych z aktualizacją oprogramowania znajdują się w materiale referencyjnym klasy SMS_SoftwareUpdate .
Aby uzyskać informacje na temat wywoływania przykładowego kodu, zobacz Wywoływanie fragmentów kodu Configuration Manager.
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;
}
}
Przykładowa metoda ma następujące parametry:
Parametr | Wpisać | Opis |
---|---|---|
connection |
-Zarządzane: WqlConnectionManager - VBScript: SWbemServices |
Prawidłowe połączenie z dostawcą programu SMS. |
Kompilowanie kodu
Ten przykład języka C# wymaga:
Obszary nazw
System
System.collections.generic
System.text
Microsoft. ConfigurationManagement.ManagementProvider
Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine
Zestawu
adminui.wqlqueryengine
microsoft.configurationmanagement.managementprovider
Niezawodne programowanie
Aby uzyskać więcej informacji na temat obsługi błędów, zobacz Informacje o błędach Configuration Manager.
zabezpieczenia .NET Framework
Aby uzyskać więcej informacji na temat zabezpieczania aplikacji Configuration Manager, zobacz Configuration Manager administracja oparta na rolach.