Each query within SMS has instance of the SMS Provider class SMS_Query. The queries provided with SMS allow you to query for the systems that have been discovered, all Windows XP Systems, all users, client components experiencing fatal errors, and other information about an SMS site. The SMS Administrator console allows you to see and run the complete list of queries, and you can also get a list of available queries by using a script.
You can also create your own queries. See the SMS 2003 SDK for further details.
A string, such as "SMS040", identifies the query in the SMS_Query property QueryID. When retrieved, a query instance is a collection of matching resources. The following script works by first retrieving the SMS_Query collection for all Windows Server 2003 Systems (SMS040) and then enumerating through the collection to display the name of each resource returned by the query.
Example
On Error Resume Next Dim objSWbemServices Dim ProviderLoc Dim Location Dim QueryID Dim objQuery Dim colQueryResults Set ProviderLoc = GetObject("winmgmts:{impersonationLevel=impersonate}!root/sms:SMS_ProviderLocation") If err.number<>0 Then wscript.echo "Couldn't get SMS Provider" wscript.quit End If For Each Location In ProviderLoc.Instances_ If Location.ProviderForLocalSite = True Then Set objSWbemServices = GetObject("winmgmts:" & Location.NamespacePath) Exit For End If Next QueryID="SMS040" ' change for other queries 'Get query. Set objQuery=objSWbemServices.Get("SMS_Query.QueryID='"+ QueryID +"'" ) If err.number<>0 Then wscript.echo "Couldn't get Queries" wscript.quit End If 'Run query. wscript.echo objQuery.Name wscript.echo "----------------------------------" Set colQueryResults=objSWbemServices.ExecQuery(objQuery.Expression) For Each objResult In colQueryResults wscript.echo " " + objResult.Name Next If colQueryResults.Count=0 Then wscript.echo " no query results" End If Set objSWbemServices=Nothing Set ProviderLoc=Nothing Set Location=Nothing Set objQuery=Nothing Set colQueryResults=Nothing |
Compiling the Code
- Requires an SMS 2003 Site Server.