Köra en Configuration Manager fråga
I Configuration Manager kör du en SMS_Query
baserad fråga genom att hämta frågeinstansen och sedan genom att köra WQL-frågan i objektegenskapen SMS_Query
Expression
.
När du har WQL-frågan kan du köra frågan antingen synkront eller asynkront. Följande exempel är synkront. Information om hur du kör frågan asynkront finns i How to Perform an Asynchronous Configuration Manager Query by Using Managed Code (Så här utför du enasynkron Configuration Manager fråga med hjälp av WMI). I de här exemplen ändrar du strängen select * from collection
till egenskapsvärdet Expression
.
Så här kör du en fråga
Konfigurera en anslutning till SMS-providern. Mer information finns i grunderna för SMS-provider.
SMS_Query
Hämta objektet för den fråga som du vill köra.Kör frågan som identifieras av objektegenskapen
SMS_Query
Expression
.
Exempel
Följande exempelmetod kör synkront frågan som identifieras av parametern queryId
.
Information om hur du anropar exempelkoden finns i Anropa Configuration Manager kodfragment.
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;
}
}
Exempelmetoden har följande parametrar:
Parameter | Typ | Beskrivning |
---|---|---|
connection |
-Hanterade: WqlConnectionManager – VBScript: SWbemServices |
En giltig anslutning till SMS-providern. |
queryID |
-Hanterade: String -Vbscript: String |
En frågeidentifierare. Mer information finns i klassegenskapen SMS_Query QueryID . |
Kompilera koden
C#-exemplet har följande kompileringskrav:
Namnområden
System
System.Collections.Generic
System.Text
Microsoft. ConfigurationManagement.ManagementProvider
Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine
Församlingen
microsoft.configurationmanagement.managementprovider
adminui.wqlqueryengine
Robust programmering
Mer information om felhantering finns i Om Configuration Manager fel.
.NET Framework Säkerhet
Mer information om hur du skyddar Configuration Manager program finns i Configuration Manager rollbaserad administration.
Se även
Om Configuration Manager frågor
Så här skapar du en Configuration Manager fråga
Så här utför du en asynkron Configuration Manager fråga med hjälp av hanterad kod
Så här utför du en asynkron Configuration Manager fråga med hjälp av WMI