Como Enumerar as Atualizações que Correspondam a Critérios Específicos
Este tópico explica como enumerar atualizações de software que correspondem a critérios específicos no Gestor de Configuração, construindo uma consulta e, em seguida, usando o ExecuteQuery
método da classe para executar a QueryProcessor
consulta.
Para enumerar atualizações correspondentes a critérios específicos
Configurar uma ligação com o Fornecedor DE SMS.
Atribua uma consulta específica a uma variável.
Passe a variável para o
ExecuteQuery
método.
Exemplo
O método de exemplo a seguir enumera atualizações que correspondem a critérios específicos, passando uma consulta ao ExecuteQuery
método.
Quatro exemplos de consultas são demonstrados abaixo:
Uma consulta que exibe as atualizações de software que já foram descarregadas.
Uma consulta que exibe as atualizações de software que já foram implementadas.
Uma consulta que exibe as atualizações de software que têm um valor de gravidade particular.
Uma consulta que exibe a atualização do software CI_IDs que estão associadas a um artigo de base de conhecimento específico.
Informações detalhadas sobre as propriedades associadas a uma atualização de software estão no SMS_SoftwareUpdate material de referência de classe.
Para obter informações sobre a chamada do código de amostra, consulte o Código de Identificação do Gestor de Chamadas.
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;
}
}
O método exemplo tem os seguintes parâmetros:
Parâmetro | Tipo | Description |
---|---|---|
connection |
- Gerido: WqlConnectionManager - VBScript: SWbemServices |
Uma ligação válida ao Fornecedor de SMS. |
A Compilar o Código
Este exemplo C# requer:
Espaços de nomes
Sistema
System.Collections.Generic
System.Text
Microsoft.ConfigurationManagement.ManagementProvider
Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine
Assemblagem
adminui.wqlqueryengine
microsoft.configurationmanagement.managementprovider
Programação Robusta
Para obter mais informações sobre o tratamento de erros, consulte Sobre erros do Gestor de Configuração.
Segurança do .NET Framework
Para obter mais informações sobre a segurança das aplicações do Gestor de Configuração, consulte a administração baseada em funções do Gestor de Configuração.
Ver também
About software update deployments (Acerca das implementações de atualizações de software)