Saturday 26 January 2013

Create Config Mgr Collection with multiple criteria

I recently deployed Config Mgr 2012 in a higher level educational institute and configured a solution for software updates.

The Active Directory structure included a parent resource domain and two child domains (Staff and Students). There were different requirements for patching clients in the two domains. Therefore I had to create collections with two criteria:

Windows 7 Computers AND
Member of specific domain


This was carried out in 2 steps 

1. Created "All Windows 7 Computers" collection
2. Created Student Collection utilising the "All Windows 7 Collection"


1. "All Windows 7 Computers" collection
I created a simple "All Windows 7 Computers" using the SQL Query

select SMS_R_SYSTEM.ResourceID,SMS_R_SYSTEM.ResourceType,SMS_R_SYSTEM.Name,SMS_R_SYSTEM.SMSUniqueIdentifier,SMS_R_SYSTEM.ResourceDomainORWorkgroup,SMS_R_SYSTEM.Client from SMS_R_System where SMS_R_System.OperatingSystemNameandVersion like "Microsoft Windows NT Workstation 6.1"


2. Created Student Collection utilising the "All Windows 7 Collection"
I then created a new Collection for Windows 7 Computers in Students Domain using "All Windows 7 Computers" as the "Limiting Collection"



Created a Query Rule to choose computers in the Students domain (this is more useful than a Direct Rule as it populates dynamically when new computers are added to this domain)






Edited Query Statement


Selected Criteria tab and added a criteria (by clicking gold star) - chose Resouce Domain or Workgroup as the System Resource





 Typed Student domain name






Completed the Create Collection Wizard






Collection now available


Do not allow Config Mgr to use C: drive on Distribution Point

When you configure a server as a Distribution Point Config Mgr tries to use all available drives. This is not a good idea. You do not want Config Mgr to be able to use C: drive.

Create a blank text file and save it in the root of the C: drive as NO_SMS_ON_DRIVE.SMS.

Now configure the Distribution Point and check progress in the distmgr.log file. Note that Config Mgr detects the file and chooses to ignore the drive.

USMT does not migrate all PST files on computer

You are using Config Mgr 2012 with USMT 4 and have prepared a task sequence to carry out an in-place refresh from Windows XP to Windows 7. Not all PST files on the computer are available after the migration.

The reason for this is simple. By default USMT only migrates PST files which are stored in a user profile and are actually connected to an Outlook profile. However you can make the following amendment to the default miguser.xml file (you will find this file in both x86 and x64 folders within the USMT folder - take a copy of the file first). This prompts USMT to scan the entire hard drive and migrate all PST files. I have tested this process in a lab and implemented it for several customers. It works very well.

Note for clarity I have included only a small section of the XML file. The amendment is in bold.


<?xml version="1.0" encoding="UTF-8"?>
<migration urlid="http://www.microsoft.com/migration/1.0/migxmlext/miguser">

    <_locDefinition>
     <_locDefault _loc="locNone"/>
     <_locTag _loc="locData">displayName</_locTag>
    </_locDefinition>


    <!-- This component migrates all PST files -->
<component type="Documents" context="UserAndSystem">
    <displayName>All PST migrated from all fixed drives, regardless of location</displayName>
    <role role="Data">
      <rules>
        <include>
          <objectSet>
            <script>MigXmlHelper.GenerateDrivePatterns ("* [*.pst]", "Fixed")</script>
          </objectSet>
        </include>
      </rules>
    </role>
  </component>


    <!-- This component migrates My Video files -->
    <component type="Documents" context="User">
        <displayName _locID="miguser.myvideo">My Video</displayName>
        <paths>
            <path type="File">%CSIDL_MYVIDEO%</path>
        </paths>
        <role role="Data">
            <detects>
                <detect>
                    <condition>MigXmlHelper.DoesObjectExist("File","%CSIDL_MYVIDEO%")</condition>
                </detect>
            </detects>
            <rules>
                <include filter='MigXmlHelper.IgnoreIrrelevantLinks()'>
                    <objectSet>
                        <pattern type="File">%CSIDL_MYVIDEO%\* [*]</pattern>
                    </objectSet>
                </include>
                <merge script="MigXmlHelper.DestinationPriority()">
                    <objectSet>
                        <pattern type="File">%CSIDL_MYVIDEO% [desktop.ini]</pattern>
                    </objectSet>
                </merge>
            </rules>
        </role>
    </component>