Auflisten von Aktualisierungen, die einem bestimmten Kriterium entsprechen
In diesem Thema wird erläutert, wie Softwareupdates aufgelistet werden, die bestimmten Kriterien in Configuration Manager entsprechen, indem Sie eine Abfrage erstellen und dann die ExecuteQuery
-Methode der QueryProcessor
-Klasse verwenden, um die Abfrage auszuführen.
So listen Sie Updates auf, die einem bestimmten Kriterium entsprechen
Richten Sie eine Verbindung mit dem SMS-Anbieter ein.
Weisen Sie einer Variablen eine bestimmte Abfrage zu.
Übergeben Sie die Variable an die
ExecuteQuery
-Methode.
Beispiel
Die folgende Beispielmethode listet Updates auf, die bestimmten Kriterien entsprechen, indem eine Abfrage an die ExecuteQuery
-Methode übergeben wird.
Im Folgenden werden vier Beispielabfragen veranschaulicht:
Eine Abfrage, die die softwareupdates anzeigt, die bereits heruntergeladen wurden.
Eine Abfrage, die die bereits bereitgestellten Softwareupdates anzeigt.
Eine Abfrage, die die Softwareupdates anzeigt, die einen bestimmten Schweregrad aufweisen.
Eine Abfrage, die die Softwareupdate-CI_IDs anzeigt, die einem bestimmten Wissensdatenbank Artikel zugeordnet sind.
Ausführliche Informationen zu den Eigenschaften, die einem Softwareupdate zugeordnet sind, finden Sie im SMS_SoftwareUpdate Klassenreferenzmaterial.
Informationen zum Aufrufen des Beispielcodes finden Sie unter Aufrufen von Configuration Manager Codeausschnitten.
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;
}
}
Die Beispielmethode verfügt über die folgenden Parameter:
Parameter | Typ | Beschreibung |
---|---|---|
connection |
-Verwalteten: WqlConnectionManager – VBScript: SWbemServices |
Eine gültige Verbindung mit dem SMS-Anbieter. |
Kompilieren des Codes
Für dieses C#-Beispiel ist Folgendes erforderlich:
Namespaces
System
System.Collections.Generic
System.Text
Microsoft. ConfigurationManagement.ManagementProvider
Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine
Assembly
adminui.wqlqueryengine
microsoft.configurationmanagement.managementprovider
Robuste Programmierung
Weitere Informationen zur Fehlerbehandlung finden Sie unter Informationen zu Configuration Manager Fehlern.
.NET Framework-Sicherheit
Weitere Informationen zum Schützen Configuration Manager Anwendungen finden Sie unter Configuration Manager rollenbasierte Verwaltung.