Schuff at myITforum.com

Blog it to log it!
Task Sequence/MDT Referenced Packages by DP – SCCM Report

This report is based off the canned report in ConfigMgr called ‘Packages Referenced by a specific task sequence’ but it also includes references to packages from the MDT database (location, roles, makemodels) and also is queried by distribution point.

This report is meant to give you a complete look at all packages that may be referenced by a task sequence AND the MDT database and give you the results by distribution point.  This allows you to have a quick look at what distribution point might be missing a referenced package, especially from the MDT Database as the task sequence does not verify these packages before it begins.

The Assigned column states if the package has been assigned to the distribution point.  The State column displays the status of that package if it has been assigned.

Assigned column must be ‘Yes’ and State column must be ‘Ok’ in order to get all expected packages installed from that distribution point when running that specific task sequence with those MDT values applied.

Linked Servers

This report *does* use Linked Servers in order to access the MDT database.  If you are not familiar with setting up a Linked Server in your SQL environment, check out these articles here first.

Garth Jones

http://www.myitforum.com/articles/2/view.asp?id=7274

John Nelson

http://myitforum.com/cs2/blogs/jnelson/archive/2008/04/04/114622.aspx

Edit Report

Once you have created a linked server, all you need to do is import this MOF as a report.  Then edit the report and replace every piece of the report that has [192.168.1.120] with your linked server such as [MySQLBox].  This also includes the SQL statements in the prompts as well.

P.S.  My linked server is an IP address as seen in the report because on my test network my MDT database and SCCM database are both on the same server. And you cannot create a link to the same server by name, so you must use something like an IP Address. Technically if they are both on the same server you could just create views in SQL to do this instead of linked servers, whatever you prefer.

Download Report

TS_DP_MDT_Ref.mof

Screenshots

MDT DB Ref Report

MDT DB Ref Results

MDT Database Referenced Packages – SCCM Report

Even though we use Maik Koster’s MDT Web FrontEnd we still had some requirements to be able to run a quick report on referenced packages by a certain location, role, or MakeModel via the MDT database.  Another requirement is the Package Name which the MDT Database does not include.

Therefore I created a quick and simple report that references both the MDT 2010 database and ConfigMgr’s database for Package name in order to display these results. I figured I would provide the MOF for this report for others to use/modify.

This report *does* use Linked Servers in order to access the MDT database.  If you are not familiar with setting up a Linked Server in your SQL environment, check out these articles here first.

Linked Servers

Garth Jones

http://www.myitforum.com/articles/2/view.asp?id=7274

John Nelson

http://myitforum.com/cs2/blogs/jnelson/archive/2008/04/04/114622.aspx

Edit Report

Once you have created a linked server, all you need to do is import this MOF as a report.  Then edit the report and replace every piece of the report that has [192.168.1.120] with your linked server such as [MySQLBox].  This also includes the SQL statements in the prompts as well.

P.S.  My linked server is an IP address as seen in the report because on my test network my MDT database and SCCM database are both on the same server. And you cannot create a link to the same server by name, so you must use something like an IP Address. Technically if they are both on the same server you could just create views in SQL to do this instead of linked servers, whatever you prefer.

Download Report

MDT_DB_Ref.mof

 

Screenshots

MDT DB Report

MDT DB Report Results

Update! Checking Task Sequence Package References for a DP

I have updated the powershell script in which I posted about in in this blog post.

Michael Niehaus posted a blog post that described how to use powershell to automate the checking and replicating of referenced packages in a task sequence to all DPs.   This was great work and the blog can be found here. Please read it first. :)

I updated the script to include Windows Form Prompts and the ability to select a specific task sequence and specific distribution point.

I updated the following items from version 1.0:

  • ConfigMgr Server Prompt now uses a windows form to keep in form with the other prompts
  • Task Sequence prompt has checkbox to allow ‘All Task Sequences’
  • Distribution Point prompt also has checkbox to allow ‘All Distribution Points’
  • Added new prompt with datagrid showing the missing packages asking to replicate them
  • Updated comments, removed unnecessary code I included in the first version.

Version 1.2 Update:

  • Fixed an issue with Distribution Points being assigned to the central server, and not their primary server. (Work around for New-SCCMPackageDP function)

Version 1.3 Update:

  • Now includes SCCM.PSM1 version 1.5 from Michael Niehaus.   This includes a fix for the New-SCCMPackageDP function that correctly assigns the sitecode to the DP.

Feel free to give feedback or modify and make it even better.

CheckTSPrompt V1.3

Screenshots:

Connect:

Connect

Select Task Sequence:

SelectTS1.1

Select Distribution Point:

selectDP1.1

Replicate?

replicate1.1

Checking Task Sequence Package References for a DP

*Updated Script/post found here!:*   - Updated (4-27-2010)

Michael Niehaus posted a blog post that described how to use powershell to automate the checking and replicating of referenced packages in a task sequence to all DPs.   This was great work and the blog can be found here. Please read it first. :)

For our environment though we had multiple task sequence (including test task sequences) with nearly 100 distribution points.  Therefore we didn’t necessarily want all TS’s and their referenced packages to be copied to all DPs.  So all I did was took Michael’s posted powershell script and added prompts, allowing us to choose which TS and which DP to actually check and replicate to.  See screenshots and zip file below:

Also I am still quite new at Powershell so forgive any of my sloppy code and feel free to clean it up as necessary or if you see a better way of processing this. :)

Enter Server Name:

Server Name

Select Task Sequence

SelectTS

Select Distribution Point:

selectDP

Results text:

results

 

Download Powershell Script Here

 

P.S.  You will want to follow Michael’s instructions for making sure the SCCM module gets put into the proper location and also that execution policy gets set correctly.  Follow Michael’s blog to get this working first.

Setting Volume Name of Drive C:

Thought I’d share this since it came up on the email list recently.  Here is a very simple vbs script that sets the volume name of the C: drive to match the computer name.

*******************  CODE BELOW **********************

'********************************************************************************************************
'* Set Volume Name for Computer                                                               
'********************************************************************************************************
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

'Get ComputerName  
Set colItems = objWMIService.ExecQuery("Select * from Win32_ComputerSystem",,48)
For Each objItem in colItems
computername = objItem.Name
Next

'Set Volumename to Computername
Set colDrives = objWMIService.ExecQuery("Select * from Win32_LogicalDisk where DeviceID = 'C:'")
For Each objDrive in colDrives
    objDrive.VolumeName = computername
    objDrive.Put_
Next

Moving the MDT wizard off your boot disk

*Update – 02/12/2010* 

Fixed a couple of script syntax issues, thanks Todd Miller!

So this is something we used in our past solution, and also now have adopted it within our MDT\SCCM deployment solution.  What I will describe is the ability to move any Custom Front End or MDT Wizard or any other scripts you execute before the task sequence off of the boot disk and on to a master share.   Why do this?  Mainly to avoid having to update your boot disk every single time you make a script or wizard change.

First you will need to create a share if you don't already have one and subdirectories.  You do not have to follow my structure but here is an example of how we have set up our bootdisk structure:

Setup Folder Structure

  • Master Share = \\CentralServer\MDT$
    • Master Share containing all boot disk related folders
  • Boot Disk Folder = %Master Share%\Bootdisk
    • Folder used to organize everything related to boot disk
  • Boot_Menu Folder = %Master Share%\Bootdisk\Boot_Menu
    • Contains MDT Wizard or Custom Front End
  • Additional_Files Folder = %Master Share%\Bootdisk\Additional_Files
    • Contains ZTIMediaHook script that connects to Boot Menu Folder

Setup Files within Folders

  1. Copy the attached ZTIMediahook.wsf and ZTIUtility.vbs file into your Additional_Files folder.

Example:

  • %Additional_Files%\Deploy\Scripts\ZTIMediahook.wsf
  • % Additional_Files%\Deploy\Scripts\ZTIUtility.vbs
  1. Copy your MDT Wizard or Custom Wizard and associated scripts to your Boot Menu folder

Example:

  • %Boot_Menu%\MasterMediaHook.wsf
  • %Boot_Menu%\Wizard.hta
  • %Boot_Menu%\WizUtility.vbs
  • %Boot_Menu%\CustomWizard.xml
  • %Boot_Menu%\CustomWizard.vbs
  • %Boot_Menu%\[Any other boot menu files you may need]

Modify ZTIMediaHook.wsf

You will now want to modify the ZTIMediaHook.wsf to make sure it is using the correct paths to the Folder structure we setup earlier. Here are the variables of interest.

  • · masterShare
  • · BootMenuPath
  • · WizardFilesPath
  • · bootDiskPath
  • · MasterScript                ' This one in particular is the file that is called to start your Wizard scripts, typically the old ZTIMediahook.
  • · logonDomain
  • · masterAccount
  • · masterPW

Create New Bootdisk

You can now create a new bootdisk and inlcude the ZTIMediahook you modified above. The easiest way to do this is by using the "Create Boot Image Using Microsoft Deployment" task under Boot Disks.

1. Right Click Boot Images node in the SCCM console

2. Select "Create Boot Image using Microsoft Deployment"

3. Package Source Wizard

  • · Give the wizard a package source folder

4. General Settings Wizard

  • · Provide Name, Version, etc to your boot image

5. Image Options

  • · Check "Add media hook files..." option
  • · Extra Directory to Add: %Master Share%\bootdisk\additional_files

6. Summary - Click next and finish.

Step 5 above is the most important step as it adds both the execution of ZTIMediahook.wsf into the TSConfig.ini file on the bootdisk as well as copy our modified ZTIMediahook.wsf over the one that exists on the bootdisk.

Boot and Test!

Most likely you'll have to work out some kinks with the variables under the Modify ZTIMediahook.wsf section above or even permissions or paths that may have been missed. You can modify the ZTIMediahook.wsf file directly under the X:\Deploy\Scripts folder using notepad within WinPE and executing again to avoid having to create a new bootdisk again just to test.

Editing MasterMediaHook  (Added 02/12/2010)

Todd Miller brought this to my attention and I wanted to share this.  If for example you were utilizing the original ZTIMediahook as now your network-based media hook you may need to make some edits to it as well.  So if your new script is called NetworkMediaHook.wsf that resides on the share you may need to modify class names inside your script as shown here by Todd:

I had to search the script for all instances of ZTIMediaHook and change it to NetworkMediaHook.  .

For example…

'//----------------------------------------------------------------------------

'//  Main Class

'//----------------------------------------------------------------------------

Class NetworkMediaHook

Included Files  (Updated 02/12/2010)

Download:   SetupCustomMediaHook.zip

SCCM And Roles Wizard via MDT Database

For those of you that have tried to implement my previous Roles Wizard solution into your SCCM/MDT deployment, I would like to apologize it is a bit messy. :) Luckily I have trimmed down most everything that is no longer needed and simplied the process to add it to your deployment via SCCM!

You will still need the two wizard files that launch the Roles Wizard as included here in the zip. These have not changed from my last Roles Wizard update.  You will also need the SQL file or custom SQL code to create the roles view for you to query against, this is also included in the zip.

Download SCCMRolesWizard.zip Here  

(Updated  3/23/2011 - Fixed an issue with the roles not displaying in the menu even though they were found in the database)


Copy Files to the MDT Files Source Folder

  • Copy ZTERolesWiz_Scripts.vbs and ZTERolesWiz_Definition_ENU.xml files to the folder that is currently containing your MDT Files Package that you initially setup when you created your task sequence or MDT Files Package.

 

Update Customsettings.ini

  1. Open the customsettings.ini file found in the source of your MDT Settings package. This location and file should've already been created from creating an MDT Task Sequence as well.
  2. On the Priority list you will need to add the following two options:
    • SetShowRole
    • SelectableRoles
  3. On the Properties list you will need to add the following two options:
    • ShowRole
    • SelectableRole(*)
  4. Add the following two sections to your customsettings.ini file
    • [SetShowRole]
      ShowRole=1
    • [SelectableRoles]
      SQLServer=MYSERVER
      Database=BDDADMINDB
      Netlib=DBNMPNTW
      Table=SelectableRoles
      Parameters=ShowRole
      SQLShare=MDT_LOGS

 

      • P.S. Update the Database, SQLServer and SQLShare to values that correctly match your environment.

 Note:  Your customsettings.ini should already be configured with your database queries as well.

image

 

Create Custom Roles View in SQL

In order for the [SelectableRoles] section from the customsettings.ini (as shown above) to work we need to create the view in our MDT database within SQL. You can either open the .sql file included in the zip and execute it within SQL Management Studio or simply copy and paste the code below into a new query window and execute it.

  1. Open SQL Server Management Studio Console
  2. Copy and Paste the following code into a new query window and execute it. (Making sure that bddadmindb is set to your corresponding MDT database.
  • USE [bddadmindb]
    GO

    IF  EXISTS (select * from dbo.sysobjects where id = object_id(N'[dbo].[SelectableRoles]') and OBJECTPROPERTY(id, N'IsView') = 1)
    DROP VIEW [dbo].[SelectableRoles]
    Go

    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    CREATE VIEW [dbo].[SelectableRoles]
    AS
    SELECT     Role AS SelectableRole, 1 AS ShowRole
    FROM         dbo.RoleIdentity

    GO

image

Edit Task Sequence

  1. Next you need to add a task to the task sequence in the "New Computers only" folder within the "Preinstall" phase.
    • mshta.exe "%SCRIPTROOT%\Wizard.hta" /definition:ZTERolesWiz_Definition_ENU.xml
    • image

 

  1. You will also need to follow this task up with a new Gather task using CustomSettings.ini as your rules. This is required in order to process the Roles you have selected.

Note: Any Properties that you had already defined directly in the customsettings.ini or through an automated database query (such as Make/Model) will not be overwritten with the Roles Wizard selection. So make sure the properties you want to set via the Roles have not previously been set somewhere in the process.

Update distribution Points

  1. Right click and select "Update Distribution Points" on both your MDT Files Package and your MDT Settings Package so the new changes get copied to your distribution Points.

 

Done!

That's it, it should be done.  The Roles Wizard will prompt on the New Computer scenario only and display all Roles defined in the MDT Database. If you want to get fancy you can modify the custom Roles View to maybe even only show certain roles or such, the rest is up to you. 

Troubleshooting

If you are having troubles getting the roles to show up in the wizard or having the wizard show up at all you can Press F8 while in WinPE to open your command prompt (assuming you have this option enabled in your boot media) and open the C:\_SMSTaskSequence\Logs\bdd.log file for troubleshooting. Also you can always email me for questions.

SCCM OSD - Install Packages Failing?

I just wanted to blog this down real quick since it was fresh in memory.

Troubleshooting a deployment issue from the SMS Email distribution list; we were attempting to solve why an SCCM/MDT deployment was not installing the packages as listed in the task Install Software in the task sequence, with the base variable of PACKAGES.

Well come to find out, the package's programs in SCCM were not configured to allow them to be used in the task sequence without the use of an advertisement. You can find and enable this feature within the programs properties as shown here:

allowprogramtask

If you do not enable this feature and attempt to install packages from SCCM via the Install Software task you may see something like this error in your SMSTS.LOG file

installpackages

Thanks to Todd Hemsell for sharing the error code and Michael Niehaus for pointing out the potential problem based on this error code!

P.S See Michael's post here for a more in-depth look at this process and a script for changing all your existing programs to have this feature enabled:

http://blogs.technet.com/mniehaus/archive/2008/05/08/using-the-configmgr-2007-install-software-step-to-install-a-dynamic-list-of-packages.aspx

How to Configure Windows Server 2008 for Site System Roles

Here is a blurb I actually found on the Microsoft TechNet forums as I was searching for answers to my Windows 2008/SCCM SP1 RC Lab issues and I thought it was worth repeating again here for those in the same boat.

Here is the blurb from the help information that will be in the RTM release of SP1.

Topics referencing Configuration Manager 2007 SP1 and Configuration Manager 2007 R2 are pre-release documentation and are subject to change in future releases. Blank topics are included as placeholders.

Topic last updated—March 2008

Microsoft System Center Configuration Manager 2007 requires the WebDAV component to be installed and enabled on the management points and BITS-enabled distribution points. The WebDAV component is not included in Windows Server 2008 operating system.

Note

The information in this topic applies only to Configuration Manager 2007 SP1.

You must download, install, and configure WebDAV manually on management points and BITS-enabled distribution points running Windows Server 2008. On BITS-enabled distribution points, you might also have to edit the requestFiltering section of the applicationHost.config file if your packages contain extensions that are blocked.

Important

Enabling WebDAV and modifying the requestFiltering section for the Web site increases the attack surface of the computer. Enable WebDAV only when required for management points and BITS-enabled distribution points. If you enable WebDAV on the default Web site, it is enabled for all applications using the default Web site. If you modify the requestFiltering section, it is modified for all Web sites on that server. The security best practice is to run Configuration Manager 2007 on a dedicated Web server. If you must run other applications on the Web server, use a custom Web site for Configuration Manager 2007. 

Site servers and branch distribution points require Remote Differential Compression (RDC) to generate package signatures and perform signature comparison. RDC is not installed by default on computers running Windows Server 2008.

Reporting points running Windows Server 2008 require ASP.NET with Windows Authentication to be enabled.

To install and configure WebDAV for BITS-enabled distribution points and management points

  1. In Server Manager, on the Features node, start the Add Features Wizard.
    • On the Select Features page, select BITS Server Extensions.
    • When prompted, click Add Required Role Services to add the dependent components, including the Web Server (IIS) role.
    • On the Select Features page, select Remote Differential Compression, and then click Next.
    • On the Web Server (IIS) page, click Next.
    • On the Select Role Services page, under IIS 6 Management Compatibility, select IIS 6 WMI Compatibility.
    • Under Application Development, select ASP.NET and, when prompted, click Add Required Role Services to add the dependent components.
    • Under Security, select Windows Authentication, and then click Next.
    • On the Confirmation page, click Install, and then complete the rest of the wizard.
  2. Download the x86 or x64 version of WebDAV at http://go.microsoft.com/fwlink/?LinkId=108052.
  3. Run either webdav_x86_golive.msi or webdav_x64_golive.msi, depending on your processor.
  4. Enable WebDAV and create an Authoring Rule, as follows:
    • Open Internet Information Services (IIS) Manager.
    • In the Connections pane, expand the Sites node in the tree, and then click SMSWEB if you are using a custom Web site or click Default Web Site if you are using the default Web site for the site system.
    • In the Features View, double-click WebDAV Authoring Rules.
    • When the WebDAV Authoring Rules page is displayed, in the Actions pane, click Enable WebDAV.
    • After WebDAV has been enabled, in the Actions pane, click Add Authoring Rule.
    • In the Add Authoring Rule dialog box, under Allow access to, click All content.
    • Under Allow access to this content to, click All users.
    • Under Permissions, click Read, and then click OK.
  5. Change the property behavior as follows:
    • In the WebDAV Authoring Rules page, in the Actions pane, click WebDAV Settings.
    • In the WebDAV Settings page, under Property Behavior, set Allow anonymous property queries to True.
    • Set Allow Custom Properties to False.
    • Set Allow property queries with infinite depth to True.
    • If this is a BITS-enabled distribution point, under WebDAV Behavior, set Allow access to hidden files to True.

Important

Allow access to hidden files is not required for management points and should not be configured.

    • In the Action pane, click Apply.
  1. Close Internet Information Services (IIS) Manager.
  2. Verify that there are no error messages for the distribution point or management point role, as follows:
    • In the Configuration Manager console, navigate to System Center Configuration Manager / System Status / Site Status / <site code> - <site server> / Site System Status.
    • Check the status of the management point and distribution point roles.
    • If you see any errors, right-click the role, click Show Messages, and then click All to see more detail.

To modify the requestFiltering section on BITS-enabled distribution points

  1. On the BITS-enabled distribution points, open %windir%\System32\inetsrv\config\applicationHost.config.
  2. Search for the <requestFiltering> section.
  3. Determine the file extensions that you will have in the packages on that distribution point. For each file extension that you require, change allowed to true.
  4. For example, if your package will contain a file with an .mdb extension, change the line <add fileExtension=".mdb" allowed="false" /> to <add fileExtension=".mdb" allowed="true" />.

Important

Allow only the file extensions required for your packages.

  1. Save and close applicationHost.config.

To add Remote Differential Compression to site servers and branch distribution points

  1. In Server Manager, on the Features node, start the Add Features Wizard.
  2. On the Select Features page, select Remote Differential Compression, and then click Next.
  3. Complete the rest of the wizard.

To enable ASP.NET and Windows Authentication on the reporting point

  1. In Server Manager, on the Roles node, start the Add Roles Wizard.
  2. On the Select Server Roles page, select Web Server (IIS).
  3. When prompted, click Add Required Role Services to add the dependent components.
  4. On the Select Server Roles page, click Next.
  5. Under Application Development, select ASP.NET and, when prompted, click Add Required Role Services to add the dependent components.
  6. Under Security, select Windows Authentication, and then click Next.
  7. On the Confirmation page, click Install, and then complete the rest of the wizard.
Posted: May 07 2008, 11:22 PM by jscheffelmaer | with no comments
Filed under:
SCCM PXE Service Point & WDS

I don't know if anyone else has ran into issues setting up the PSP on your SCCM box or WDS box but I can tell you it is very touchy to failure if not done right.  On our WDS server I already had went in through the WDS console to configure WDS.  Well most people may tell you that is a no no when it comes to setting up PSP on that server.  Needless to say I was getting all kinds of different event errors about WDS service not starting, PXE service not starting, pxemsi installer not seeming to finish according to the pxeMSI.log file.

After all said and done here are the steps I followed after encountering issues:

  1. Remove PXE Service Point from WDS Server
  2. Remove WDS Installation from Server (via Add/Remove Components)
  3. Reboot
  4. Install WDS Component (via Add/Remove Components)
  5. Reboot
  6. Do NOT attempt to open or configure WDS from the installed WDS Administrative Tool.
  7. Add PXE Service Point as a role via the ConfigMgr console to the WDS Server.
  8. Watch the logs and see success.

This seemed to have cleared things up for me and hopefully may help someone else out there that is having troubles playing with the PSP Role and WDS.

Posted: May 07 2008, 04:54 PM by jscheffelmaer | with 1 comment(s)
Filed under:
Using SCCM discovery to filter collections by AD Activity

Those of you that are using the Enhanced System Discovery Tool are already familiar with this procedure.  But what if you don't have ESD but do indeed have SCCM deployed? You can still pull this attribute into ConfigMgr and then use it throughout your queries and collections.

The first thing you will need to do is modify your AD System Discovery properties to include the whenChanged attribute.  This can be found under the Active Directory attribute.

Once you have added this attribute you will want to select the Polling Schedule tab and checkbox the Run discovery as soon as possible if you want the new data for the whenChanged attribute to start showing up right away.  Keep in mind this will increase system activity during this activity.

whenChanged

And to verify that it is indeed collecting it you can click on properties on a resource in the All Systems collection and browse through the data discovery data to see the new whenChanged property as well as its value as shown to the right.  The values may take awhile as your System Discovery runs and you may also discovery many Null values as well.

whenChanged data

Now that you have your new whenChanged property being populated into ConfigMgr you will simply need to create a query to utilize this data for your own benefit. Here is an example of a query that displays all machines that have an AD Activity Greater than 28 Days (Using whenChanged property):

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 (DateDiff(day, whenChanged, GetDate()) > 28)

Now simply add that query into one of your collections and you can use the collection as a targeting or clean collection or how ever you prefer to use it.

P.S.  Once you paste this query statement into the query language window you will not be able to go back to the Show Query Design window as the DateDiff function is not supported in that view.  It has no effect on the query or results though.

Microsoft Deployment Tool, SCCM, & USMT.

If you have played with the MDT & SCCM integration then you may have noticed that SCCM uses its own USMT package and settings for the State Migration node in the task sequence.  This may get complicated for you if you are used to using the USMTMigFiles and the USMTConfigFile properties in your BDD/MDT rules previous to SCCM as SCCM does not use these values anymore.  In fact it doesn't support a Config File at all, only the mig files.  You can achieve the same result of the USMTMigFiles property by setting the variable OSDMigrateConfigFiles to a comma-seperated list of the file names that should be used (Thanks to Michael Niehaus for that tip). 

 Now here's where the logs may confuse you if you are following along in a test environment.  The BDD.log will indeed show it using the USMTConfigFile and USMTMigFiles variables and running USMT command.  Don't be alarmed, this is *only* to run an estimate step in the sequence to determine space required and location to store them, the same step that was in BDD before SCCM so nothing new there. 

So whats the catch? Well since the estimation step is using your old variables and the actual State Migration step is using the OSDMigrateConfigFiles variable you'll want to sync these variables up. Why? Take this for example: If you have your USMTMigFiles assigned to a value of test.xml and in that xml you were testing the migration of MP3s and photos and videos even then the estimation will actually calculate those into concideration when it runs it estimate size.  So in this example lets say the estimate returned that it requires 20GB of space for migration and the machine only has 10GB of available space. It will now tell the sequence to not use the local storage for State Migration because there is not enough space.  Now if your OSDMigrateConfigFiles is assigned the value of UserData.xml and only contains a very small subset of what your Test.xml contained, then it may only need 1-2GB of space to migrate or even less, but will still not use the local storage to store this data because the estimate step told it not to based on its findings using test.xml.

You can see where this *may* become an issue or moreso of wasted resources when they are not in sync.  So it seems currently that it would be a best method to make sure your USMTMigFiles variable has the same values as the OSDMigrateConfigFiles and that the USMTConfigFile variable is not used at all to make sure the estimate and the true migration data match up, and I'll provide a quick example here.

(CustomSettings.ini)

USMTMigFiles1=CustomData.xml

USMTMigFiles2=AppsData.xml

OSDMigrateConfigFiles=CustomData.xml,AppsData.xml

 

SCCM/MDT: Deploying Applications Based on Previous Application Versions

So for the last couple days I have been trying to get this to work and finally it hit me what I was doing wrong.   If you want to set this up all you need to do is first use an MDT imported Task Sequence into SCCM so it takes advatange of the MDT scripts and settings. This will setup a task in your task sequence called Install Software and the settings should already be set to the Install Multiple Applications option with the Base property being PACKAGES (Which we all know is the property BDD/MDT uses to assign SMS packages).  Second is you can simply follow the documentation in the Deployment Customization Desktop Samples doc that is included in the Microsoft Deployment Tools install. The section is called Deploying Applications Based on Previous Application Versions on page 39.

 What is the trouble you ask? Well if you are like me and have never set this or even referenced a SMS package and program combo via BDD or MDT before then you'll probably just follow the documentation word for word. And here is the key problem! The documentation gives the following example for putting a package into your PackageMapping table:

INSERT INTO [PackageMapping] (ARPName, Packages) VALUES('Office8.0', 'XXX0000F-Install Office 2003 Professional')

Those that are familiar with referencing SMS packages in their customsettings.ini or their BDD database will instantly spot the flaw with this syntax.  They are mapping to the Office 2003 Profession install using the [PACKAGEXXX-Program] format (notice the dash) when in fact it is suppose to be a colon such as [PACKAGEXXX:Program]!  So the correct example should look like this:

INSERT INTO [PackageMapping] (ARPName, Packages) VALUES('Office8.0', 'XXX0000F:Install Office 2003 Professional')

Simple mistake yet I should've noticed this right away since this is the format displayed in the BDD console you when use the Add Package option in the database section.

The documentation references the same syntax error again in the same section as noted below.  Just keep in mind it should be a colon and not a dash and you will be in good shape. 

(XXX0000F-Install Office 2003 Profession). This indicates that package XXX0000F-Install Office 2003 Professional will be installed by the ZTI process during the State Restore Phase.

HTA's not working in WinPE

Have you tried to impliment one of the HTA wizards into your ZTI deployment only to find out that it is not launching or showing up at all?  Well besides the configuration required to get the script running in the first place, there is some requirements for WinPE that enables it to successfully launch HTA's.

 If you do a windiff on your ZTI$\Boot\Source folder and the Original WinPE 2005 download, you may find that the ZTI source is missing MSHTML.DLL file.  The reason this may be is because you may be using Windows Server 2003 SP1 and Windows PE 2005 to create your boot image from the BDD workbench.  The problem has to do with the BuildOptionalComponents.vbs script that is used to create your image. It looks for the following files, mshtml.dl_, iepeers.dl_, plugin.oc_, in your Windows 2003 SP1 source media.  Unfortunately these are already extracted to the full names in the Windows 2003 SP1 source media, therefore the script never finds the file, and therefore was never able to copy it over to the ZTI\Boot\Source correctly before building it. 

You will either need to modify the script to look for both file names, extracted and non-extracted, or you will need to manually copy the files (at least MSHTML.DLL) over to your ZTI\Boot\Source folder in order to get HTA windows to launch at all.

Another person that had this same problem stated that he did the following as a workaround for getting it to work as well:

"As a workaround, since I didn’t want to edit any scripts, I found those 3 files in Windows XP and copied those to the source location in Server 2003."

Hopefully this should help others out there running into the same issue.

Unknown Device Removal Script

I wrote this script to automate the part of removing those pesky Unknown Devices that show up when lets say you are creating your reference or master XP image.   All this script does is queries WMI for any pnp devices that have a status of Error and uses devcon to remove them.   This is perfect for placing right before the sysprep step in your BDD automation.

http://myitforum.com/cs2/blogs/jscheffelmaer/BDD/Remove%20Unknown%20Devices%20XP.zip

 P.S.  This script only detects unknown devices that have already been marked as 'Error'.  Therefore devices that are prompting the wizard for drivers may not be detected with this script.  Luckily it seems that BDD unattended install of XP marks all the unknowns as Error's right away so it should work.

 

More Posts Next page »