Configuration Manager クエリを実行する方法
Configuration Managerでは、クエリ インスタンスをSMS_Query
取得し、オブジェクト Expression
プロパティで WQL クエリを実行することで、ベースのクエリをSMS_Query
実行します。
WQL クエリを作成したら、クエリを同期的または非同期的に実行できます。 次の例は同期です。 クエリを非同期的に実行する方法については、「マネージ コードを使用して非同期Configuration Manager クエリを実行する方法」および「WMI を使用して非同期Configuration Manager クエリを実行する方法」を参照してください。 これらの例では、文字列を select * from collection
プロパティ値に Expression
変更します。
クエリを実行するには
SMS プロバイダーへの接続を設定します。 詳細については、「 SMS プロバイダーの基礎」を参照してください。
実行する
SMS_Query
クエリのオブジェクトを取得します。オブジェクト プロパティによって識別されるクエリを
SMS_Query
実行しますExpression
。
例
次のメソッド例では、 パラメーターによって識別されるクエリを同期的に queryId
実行します。
サンプル コードの呼び出しについては、「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;
}
}
このメソッドの例には、次のパラメーターがあります。
パラメーター | 型 | 説明 |
---|---|---|
connection |
-管理: WqlConnectionManager - VBScript: SWbemServices |
SMS プロバイダーへの有効な接続。 |
queryID |
-管理: String -Vbscript: String |
クエリ識別子。 詳細については、class QueryID プロパティに関するページをSMS_Query 参照してください。 |
コードのコンパイル
C# の例には、次のコンパイル要件があります。
名前空間
System
System.Collections.Generic
System.text
Microsoft。ConfigurationManagement.ManagementProvider
Microsoft。ConfigurationManagement.ManagementProvider.WqlQueryEngine
Assembly
microsoft.configurationmanagement.managementprovider
adminui.wqlqueryengine
堅牢なプログラミング
エラー処理の詳細については、「Configuration Manager エラーについて」を参照してください。
.NET Framework のセキュリティ
Configuration Manager アプリケーションのセキュリティ保護の詳細については、「ロールベースの管理Configuration Manager」を参照してください。
関連項目
クエリのConfiguration Managerについて
Configuration Manager クエリを作成する方法
マネージド コードを使用して非同期Configuration Manager クエリを実行する方法
WMI を使用して非同期Configuration Manager クエリを実行する方法