Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
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_QueryExpression.
När du har WQL-frågan kan du köra frågan 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_QueryHämta objektet för den fråga som du vill köra.Kör frågan som identifieras av objektegenskapen
SMS_QueryExpression.
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_QueryQueryID . |
Kompilera koden
C#-exemplet har följande kompileringskrav:
Namnområden
System
System.Collections.Generic
System.Text
Microsoft.ConfigurationManagement.ManagementProvider
Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine
Församling
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ågorSå 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 kodSå här utför du en asynkron fråga Configuration Manager fråga med hjälp av WMI