Come eseguire una query Configuration Manager
In Configuration Manager si esegue una SMS_Query
query basata recuperando l'istanza di query e quindi eseguendo la query WQL nella proprietà dell'oggetto Expression
SMS_Query
.
Dopo aver creato la query WQL, è possibile eseguire la query in modo sincrono o asincrono. L'esempio seguente è sincrono. Per informazioni sull'esecuzione asincrona della query, vedere How to Perform an Asynchronous Configuration Manager Query by Using Managed Code (Come eseguire una query di Configuration Manager asincrona tramite WMI). In questi esempi modificare la select * from collection
stringa nel valore della Expression
proprietà .
Per eseguire una query
Configurare una connessione al provider SMS. Per altre informazioni, vedere Nozioni fondamentali sul provider SMS.
Ottenere l'oggetto
SMS_Query
per la query da eseguire.Eseguire la query identificata dalla proprietà dell'oggetto
SMS_Query
Expression
.
Esempio
Il metodo di esempio seguente esegue in modo sincrono la query identificata dal queryId
parametro .
Per informazioni sulla chiamata del codice di esempio, vedere Chiamata di frammenti di codice Configuration Manager.
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;
}
}
Il metodo di esempio include i parametri seguenti:
Parametro | Tipo | Descrizione |
---|---|---|
connection |
-Gestito: WqlConnectionManager - VBScript: SWbemServices |
Connessione valida al provider SMS. |
queryID |
-Gestito: String -Vbscript: String |
Identificatore di query. Per altre informazioni, vedere la proprietà della SMS_Query classe QueryID . |
Compilazione del codice
L'esempio C# presenta i requisiti di compilazione seguenti:
Namespaces
Sistema
System.collections.generic
System.Text
Microsoft. ConfigurationManagement.ManagementProvider
Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine
Assembly
microsoft.configurationmanagement.managementprovider
adminui.wqlqueryengine
Programmazione efficiente
Per altre informazioni sulla gestione degli errori, vedere Informazioni sugli errori di Configuration Manager.
Sicurezza di .NET Framework
Per altre informazioni sulla protezione delle applicazioni Configuration Manager, vedere Configuration Manager'amministrazione basata sui ruoli.
Vedere anche
Informazioni sulle query Configuration Manager
Come creare una query Configuration Manager
Come eseguire una query Configuration Manager asincrona usando codice gestito
Come eseguire una query Configuration Manager asincrona usando WMI