Como executar uma consulta de Configuration Manager
Em Configuration Manager, você executa uma SMS_Query
consulta baseada obtendo a instância de consulta e executando a consulta WQL na propriedade do SMS_Query
objetoExpression
.
Depois de ter a consulta WQL, você pode executar a consulta de forma síncrona ou assíncrona. O exemplo a seguir é síncrono. Para obter informações sobre como executar a consulta de forma assíncrona, confira Como executar uma consulta assíncrona Configuration Manager usando código gerenciado e como executar uma consulta assíncrona Configuration Manager usando wmi. Nesses exemplos, altere a select * from collection
cadeia de caracteres para o valor da Expression
propriedade.
Para executar uma consulta
Configure uma conexão com o Provedor de SMS. Para obter mais informações, confira Os fundamentos do Provedor de SMS.
Obtenha o
SMS_Query
objeto para a consulta que você deseja executar.Execute a consulta identificada pela propriedade do
SMS_Query
objetoExpression
.
Exemplo
O método de exemplo a seguir executa de forma síncrona a consulta identificada pelo queryId
parâmetro.
Para obter informações sobre como chamar o código de exemplo, consulte Chamando Configuration Manager Snippets de Código.
Sub RunQuery(connection, queryId)
Dim query
Dim queryResults
Dim queryResult
' Get query.
Set query=connection.Get("SMS_Query.QueryID='" & queryId & "'" )
If err.number<>0 Then
WScript.echo "Couldn't get Queries"
Exit Sub
End If
' Run query.
WScript.echo query.Name
WScript.echo "----------------------------------"
Set queryResults=connection.ExecQuery(query.Expression)
For Each queryResult In queryResults
wscript.echo " " & queryResult.Name
Next
If queryResults.Count=0 Then
WScript.echo " no query results"
End If
End Sub
public void RunQuery(WqlConnectionManager connection, string queryId)
{
try
{
// Get the query.
IResultObject query = connection.GetInstance(@"SMS_Query.QueryID='" + queryId + "'");
Console.WriteLine(query["Name"].StringValue);
Console.WriteLine("----------------------------------");
// Get the query results.
IResultObject queryResults = connection.QueryProcessor.ExecuteQuery(query["Expression"].StringValue);
bool resultsFound = false;
foreach (IResultObject queryResult in queryResults)
{
resultsFound = true;
Console.WriteLine(queryResult["Name"].StringValue);
}
if (resultsFound == false)
{
Console.WriteLine(" No query results");
}
}
catch (SmsException ex)
{
Console.WriteLine("Failed to run query: " + ex.Message);
throw;
}
}
O método de exemplo tem os seguintes parâmetros:
Parâmetro | Tipo | Descrição |
---|---|---|
connection |
-Gerenciado: WqlConnectionManager - VBScript: SWbemServices |
Uma conexão válida com o provedor de SMS. |
queryID |
-Gerenciado: String -Vbscript: String |
Um identificador de consulta. Para obter mais informações, consulte a propriedade de SMS_Query classe QueryID . |
Compilando o código
O exemplo C# tem os seguintes requisitos de compilação:
Namespaces
System
System.Collections.Generic
System.Text
Microsoft. ConfigurationManagement.ManagementProvider
Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine
Assembly
microsoft.configurationmanagement.managementprovider
adminui.wqlqueryengine
Programação robusta
Para obter mais informações sobre o tratamento de erros, consulte Sobre erros de Configuration Manager.
Segurança do .NET Framework
Para obter mais informações sobre como proteger aplicativos Configuration Manager, consulte Configuration Manager administração baseada em função.
Confira também
Sobre consultas Configuration Manager
Como criar uma consulta de Configuration Manager
Como executar uma consulta de Configuration Manager assíncrona usando código gerenciado
Como executar uma consulta de Configuration Manager assíncrona usando o WMI