Shaun Cassells at

SMS 2003 and ConfigMgr 2007, PowerShell, Scripting, Finance, Fitness and Fun


Locations of visitors to this page

November 2007 - Posts

SCCM MCTS (MCP) test 70-401 Deploying System Center Configuratin Manager 2007 Server - Beta exam (071-) 

Test #: 071-401

Promo Code #: B401 (for free test)

Skills being measured

This exam measures your ability to accomplish the technical tasks listed in the following table. The percentages indicate the relative weight of each major topic area on the exam.

Skills measured by Exam 70-401
Deploying a System Center Configuration Manager 2007 (SCCM) Server (9 percent)

Set up and configure an Active Directory schema.

Migrate from an SMS 2003 hierarchy to SCCM 2007.

Configure an SCCM hierarchy.

Set up and configure security accounts.

Configuring an SCCM Infrastructure (19 percent)

Configure client agents.

Configure site boundaries.

Configure core site system roles.

Configure discovery methods.

Configure client installation.

Configure SCCM infrastructure for Internet-based client management.

Managing Resources (14 percent)

Build an SCCM collection by using queries.

Meter software usage.

Manage assets.

Manage inventory flow.

Manage client agents.

Distributing Applications (17 percent)

Manage packages.

Manage programs.

Manage advertisements.

Schedule distribution.

Track success/failure rates for distribution.

Manage distribution points.

Deploying Operating Systems (13 percent)

Capture a reference computer image.

Manage task sequences.

Configure site system roles related to Operating System Deployment.

Deploy operating system packages.

Customize user state migration.

Deliver applications.

Securing a Network Infrastructure (13 percent)

Configure Network Access Protection (NAP).

Maintain NAP.

Migrate from Inventory Tool for Microsoft Update (ITMU) to Windows Software Update Services (WSUS).

Deploy software updates.

Manage vulnerability compliance.

Managing and Maintaining an SCCM Infrastructure (15 percent)

Manage system health.

Configure automatic maintenance tasks.

Create custom reports.

Maintain clients.

Manage systems by using Desired Configuration Management.

Manage Wake On LAN.

Posted: Nov 29 2007, 09:16 AM by scassells | with no comments
Filed under: , ,
SMS_Def.MOF Softgrid edit - doesn't really get the job done

I was playing around with the great Mof hack by Cristiano from the article “Inventorying Microsoft SoftGrid Streamed Applications” found here:

Two notes:
1) there is a typo on this line “string OriginalDescriptionURL” needs a semicolon at the end ‘;’
2) This will return all the possible to execute SoftGrid applications on a client.  It does not tell you which ones are installed nor when they were last used.  A miss leading reg key titled “LastLaunch” exists.  However I cannot find out why or when it is updated.

Information is gathered from here:
HKEY_LOCAL_MACHINE\SOFTWARE\Softricity\SoftGrid Client\CurrentVersion\Applications

Future:  Microsoft Application Virtualization (SoftGrid 4.5) will have a WMI connector that should allow better interaction.  It was a desired config request at Microsoft

Remote Desktop Users - SMX DataSift Addition - updating the SMS_Def.Mof to include users who have rights to log on remotely

I have been using the DataShift modifications for SMS 2003 SP2.
A recent request came in to also gather the ‘Remote Desktop Users’ group.

Below are the script and the MOF edit.


'Created by SMS
'Modified by Shaun Cassells
'Gathers the 'Remote Desktop Users' group and adds it to WMI

option explicit
'Turned off because I use error checking around table deletion
'On Error Resume Next

Dim strPartc, str1, str2, str3, str4
'Turn this true if you want to see command line echo
Dim bEcho: bEcho = False

Dim wbemCimtypeSint16
Dim wbemCimtypeSint32
Dim wbemCimtypeReal32
Dim wbemCimtypeReal64
Dim wbemCimtypeString
Dim wbemCimtypeBoolean
Dim wbemCimtypeObject
Dim wbemCimtypeSint8
Dim wbemCimtypeUint8
Dim wbemCimtypeUint16
Dim wbemCimtypeUint32
Dim wbemCimtypeSint64
Dim wbemCimtypeUint64
Dim wbemCimtypeDateTime
Dim wbemCimtypeReference
Dim wbemCimtypeChar16

wbemCimtypeSint16 = 2
wbemCimtypeSint32 = 3
wbemCimtypeReal32 = 4
wbemCimtypeReal64 = 5
wbemCimtypeString = 8
wbemCimtypeBoolean = 11
wbemCimtypeObject = 13
wbemCimtypeSint8 = 16
wbemCimtypeUint8 = 17
wbemCimtypeUint16 = 18
wbemCimtypeUint32 = 19
wbemCimtypeSint64 = 20
wbemCimtypeUint64 = 21
wbemCimtypeDateTime = 101
wbemCimtypeReference = 102
wbemCimtypeChar16 = 103

Dim oLocation, oServices, oInstances, oObject, oDataObject, oNewObject, oRptObject

Set oLocation = CreateObject("WbemScripting.SWbemLocator")

'Remove classes
Set oServices = oLocation.ConnectServer(, "root\cimv2")
On Error Resume Next
set oNewObject = oServices.Get("SMX_RemoteDesktopUsers")

Set oServices = oLocation.ConnectServer(, "root\cimv2\SMS")
Set oNewObject = oServices.Get("SMX_RemoteDesktopUsers")
On Error GoTo 0

'Create data class structure
Set oServices = oLocation.ConnectServer(, "root\cimv2")

Set oDataObject = oServices.Get
oDataObject.Path_.Class = "SMX_RemoteDesktopUsers"
oDataObject.Properties_.add "Account", wbemCimtypeString
oDataObject.Properties_.add "Type", wbemCimtypeString
oDataObject.Properties_.add "Domain", wbemCimtypeString
oDataObject.Properties_("Account").Qualifiers_.add "key", True

'Add Instances to data class
Set oServices = oLocation.ConnectServer(, "root\cimv2")

Dim sComputerName
Dim sQuery

Set oInstances = oServices.ExecQuery("SELECT * FROM Win32_ComputerSystem")

For EACH oObject in oInstances
 sComputerName = oObject.Name
 If bEcho Then Wscript.ECHO sComputerName

sQuery = "select partcomponent from win32_groupuser where groupcomponent = ""\\\\" & sComputerName & "\\root\\cimv2:Win32_Group.Domain=\""" & sComputerName & "\"",Name=\""Remote Desktop Users\"""""
Set oInstances = oServices.ExecQuery(sQuery)

FOR EACH oObject in oInstances
 Set oNewObject = oServices.Get("SMX_RemoteDesktopUsers").SpawnInstance_
 strPartc = oObject.PartComponent
 str1 = Split(strPartc, ",", -1, 1)
 str2 = Split(str1(0), "\", -1, 1)
  str4 = Split(str2(4), Chr(34), -1, 1)
' The Account name or Group Name is inside the quotes after the comma
  str3 = Split(str1(1), Chr(34), -1, 1)
'if the wmi source name is the same as the domain name inside the quotes, it's a local account
'str2(2) is the wmi source name, str4(1) is the domain name inside the quotes.
  If str2(2) = str4(1) Then
         oNewObject.Type = "Local"
         oNewObject.Type = "Domain"
  End If
  If bEcho Then Wscript.Echo "oNewObject.Type " & str2(2)
 oNewObject.Domain = str4(1)
 If bEcho Then Wscript.Echo "oNewObject.Domain " & str4(1)
 oNewObject.Account = str3(1)
 If bEcho Then Wscript.Echo "oNewObject.Account " & str3(1)
 '** DO NO USE **'
 ''oNewObject.Account = oObject.PartComponent
 '** DO NO USE **'

'Create reporting class structure
Set oServices = oLocation.ConnectServer(, "root\cimv2\SMS")
Set oRptObject = oServices.Get("SMS_Class_Template").SpawnDerivedClass_

'Set Class Name and Qualifiers
oRptObject.Path_.Class = "SMX_RemoteDesktopUsers"
oRptObject.Qualifiers_.Add "SMS_Report", True
oRptObject.Qualifiers_.Add "SMS_Group_Name", "Remote Desktop Users"
oRptObject.Qualifiers_.Add "SMS_Class_ID", "MICROSOFT|SMX_RemoteDesktopUsers|1.0"
'Add Reporting Class Properties
oRptObject.Properties_.Add("Account", wbemCimtypeString).Qualifiers_.Add "SMS_Report", True
oRptObject.Properties_("Account").Qualifiers_.Add "key", True
oRptObject.Properties_.Add("Domain", wbemCimtypeString).Qualifiers_.Add "SMS_Report", True
oRptObject.Properties_.Add("Type", wbemCimtypeString).Qualifiers_.Add "SMS_Report", True