Chris Nackers Blog

Oh man, what did i get myself into now....

August 2009 - Posts

SQL query to identify missing SMS/ConfigMgr boundaries

This came up on the MSSMS list from myitforum.  Here is the final result of the collaboration.  Here is a SQL query you can use to help identify missing boundaries for clients that are discovered.    I thought i had everything covered in my environment, but it always goes to show that there is always something missing :)

Hope this helps some people out.  Nice quick easy way to check.

 

SELECT DISTINCT

-- v_R_System.Name0

--, v_R_System.Client0

--, v_RA_System_IPAddresses.IP_Addresses0

v_RA_System_IPSubnets.IP_Subnets0

--, v_RA_System_SMSAssignedSites.SMS_Assigned_Sites0

FROM v_R_System LEFT OUTER JOIN

v_RA_System_IPSubnets ON v_R_System.ResourceID = v_RA_System_IPSubnets.ResourceID LEFT OUTER JOIN

v_RA_System_IPAddresses ON v_R_System.ResourceID = v_RA_System_IPAddresses.ResourceID LEFT OUTER JOIN

v_RA_System_SMSAssignedSites ON v_R_System.ResourceID = v_RA_System_SMSAssignedSites.ResourceID

WHERE (v_RA_System_SMSAssignedSites.SMS_Assigned_Sites0 IS NULL)

AND (NOT (v_RA_System_IPAddresses.IP_Addresses0 IS NULL))

AND (v_R_System.Client0 IS NULL)

AND (NOT (v_RA_System_IPSubnets.IP_Subnets0 IS NULL))

order by v_RA_System_IPSubnets.IP_Subnets0

Powershell – Moving computers to known OU

While working on our WSUS Policy, i needed to create a script to move computer objects from whatever OU they were in (unknown) to a known OU.  I decided to embark on powershell for this.  With the help of David Crown from the MSSMS list on myitforum, here is what we came up with.

 

This script takes a CSV list of computers, target location, and moves the computer objects from wherever they are, to the target location.  One of the struggles we had was getting the command to work with a computer object in the csv list that didn’t exist in AD, the final result accounts for this.

 

Import-Csv 'c:\computer exclusions.csv' | `

Foreach {$computer = get-QADComputer -name $_.computer; `

if ($computer -eq $null) {Write-Output "$_.computer bad object`n"}

       else {move-QADObject $computer -to $_.target }

      }

 

CSV format is:

Computer, Target

PolicyMaker registry extension crashes Group Policy snap-in

http://support.microsoft.com/kb/938611

Thank you Microsoft :) 

If you use PolicyMaker, there is a nice issue whenever you try to view the PolicyMaker extensions in a GPO it will crash your MMC session.  Looks like it’s an issue with IE7

 

To resolve this issue, configure the following registry value in Registry Editor:

HKEY_LOCAL_MACHINE\\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_OBJECT_CACHING\mmc.exe

To do this, follow these steps:

  1. Click Start, click Run, type regedit, and then click OK.
  2. Locate the following registry subkey, and then right-click it:

    HKEY_LOCAL_MACHINE\\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_OBJECT_CACHING

  3. Point to New, and then click DWORD Value.
  4. Type mmc.exe to name the value, and then press ENTER. Leave the value at 0.
  5. Exit Registry Editor.
SMS/ConfigMgr Anti-Virus exclusion considerations

In addition to Shaun’s posting here:

http://myitforum.com/cs2/blogs/scassells/archive/2007/05/14/what-anti-virus-scanning-exclusions-should-be-considered-for-system-and-servers.aspx

I wanted to post the additional information I’ve found for anti-virus exclusions… nothing pretty just a quick list of the information I’ve found.  This is merely a collection of information, not a best-practices guide.  Hopefully the information below will help you to develop the best setup for your environment.

-Chris

 

Systems Management Server (SMS) 2 & 2003

(dependent on SQL Server)

http://support.microsoft.com/?id=327453

http://support.microsoft.com/?id=871161

-

install.map

C:\SMS

Prevents contention for install.map data file.

   

*.adc, *.box, *.ccr, *.cfg, *.cmn, *.ct0, *.ct1, *.ct2, *.dat, *.dc, *.ddr, *.i*, *.ins, *.ist, *.job, *.lkp, *.lo_, *.log, *.mif, *.mof, *.nal, *.ncf, *.nhm, *.ofn, *.ofr, *.p*, *.pcf, *.pck, *.pdf, *.pkg, *.pkn, *.rpl, *.rpt, *.sca, *.scd, *.scu, *.sha, *.sic, *.sid, *.srq, *.srs, *.ssu, *.svf, *.tmp, *.udc

C:\SMS\Inboxes

(exclude file types or all files for all sub folders under C:\SMS\Inboxes, with the exception of C:\SMS\Inboxes\clicomp.src and C:\SMS\Inboxes\colfile.box folders).

Site Server inboxes (only applies to servers providing Site Server services)

   

*.log

C:\SMS\Logs

SMS Logs

   

*.*

C:\SMS\Netmon\i386\captures

C:\SMS\Netmon\i386\experts

Netmon capture and data files

   

-

C:\SMS\CAP_%SMSSiteCode%

(where %SMSSiteCode% is the three character site code in SMS)

(exclude file types or all files for all sub folders under C:\SMS\Inboxes)

Client Access Point inboxes (CAP) inboxes (only applies to servers providing CAP services)

   

*.* /s

C:\SMSPKG folder (this is typically the drive that contains the most available disk space)

Distribution manager stores compressed copy of package.

   

*.tmp

C:\

(by default this is the same drive as the on that contains the above SMSPKG folder)

Distribution manager compresses temporary copy of package.

   

*.msg

*.que

*.xml

C:\SMS_CCM\ServiceData

Management Point (MP) (only applies to SMS 2003 Management Points)

SMS 2003 Clients (running ITMU)

-

wsusscan.cab /s

%SystemRoot%\SoftwareDistribution\Scanfile

The Windows Update catalog is a big file and can cause performance issues when copied around on the client machine if AV is set to scan inside archived files.

Because the Wsusscan.cab file contains several nested cabinet files, excluding the Wsusscan.cab file itself is not typically sufficient to combat the high CPU use unless you can also specify to exclude its contents.

     

%SystemRoot%\system32\CCM\Cache

SMS client cache folder

     

%SystemRoot%\system32\VPCache

Package ID folder for the inventory tool

 

And here is another list someone had put together:

SMS 2003 McAfee Settings

Low-Risk Processes

Processes

CCMEXEC.exe

SITECOMP.exe

SLPEXEC.exe

SMSDBMON.exe

SMSEXEC.exe

Scan Files

Scan on Data Read - NO

Scan on Data Write - NO

Exclusions

None


Default Processes

Processes

N/A

Scan Files

Scan on Data Read - YES

Scan on Data Write – NO

Exclusions

Files of Type:

BAK

EDB

MDF

TMP

MIF

SMS

CTL

JOB

NDF

TRN

NAL

TCF

DAT

LDF

PCK

LDF

NCF

 

DBF

LO_

PSD

CFG

OFR

 

DMP

LOG

SRS

CHG

PKG

 

File Paths

Path

Exclude Subfolders

*System32\WBEM

Yes

D:\SMS

Yes

D:\SMS_CCM

Yes

E:\CAP_ENT

Yes

E:\SMSBackup

Yes

E:\SMSPKG

Yes

Pagefile.sys

 

Windows file protection

 

*SMS_CCM\ServiceData*

 

* SMS\Logs*

 
   

*SMS\Inboxes*

 

** We need some exclusions for SQL ***


High-Risk Processes

Processes

N/A

Scan Files

Scan on Data Read - YES

Scan on Data Write – NO

Exclusions

Files of Type:

BAK

EDB

MDF

TMP

MIF

SMS

CTL

JOB

NDF

TRN

NAL

TCF

DAT

LDF

PCK

LDF

NCF

 

DBF

LO_

PSD

CFG

OFR

 

DMP

LOG

SRS

CHG

PKG

 

File Paths

Path

Exclude Subfolders

*System32\WBEM

Yes

D:\SMS

Yes

D:\SMS_CCM

Yes

E:\CAP_ENT

Yes

E:\SMSBackup

Yes

E:\SMSPKG

Yes

Pagefile.sys

Yes

Windows file protection

Yes

*SMS_CCM\ServiceData*

Yes

* SMS\Logs*

Yes

*SMS\Inboxes*

Yes

   

*** We need some exclusions for SQL ***

Windows XP – Sysprep – Default profile settings

If you want your administrator profile on the reference image to apply as the default profile for all users, you will need to set the “UpdateServerProfileDirectory” command in your sysprep file before you capture the image.  Microsoft has changed this a back and forth between the various service pack releases. 

 

Here is a link from the Deployment Guys with some more information:

http://blogs.technet.com/deploymentguys/archive/2008/02/18/configuring-default-user-and-computer-settings-for-windows-image-deployment.aspx

Specific to WinXP SP3:

http://blogs.technet.com/deploymentguys/archive/2008/05/22/configuring-default-settings-for-windows-image-deployment-update-for-windows-xp-sp3.aspx

 

Here is some information from the Microsoft KB:

http://support.microsoft.com/kb/959753

How to customize the default local user profile in Windows XP or in Windows Server 2003
In Windows XP and in Windows Server 2003, updates that you have installed may change the method that you use to customize the default local user profile. For more information, see the following sections.
Windows XP Service Pack 2 (SP2)
The default behavior is to automatically copy customizations from the administrator profile to the default user profile. Therefore, no additional steps are required to customize the profile.
Windows Server 2003 Service Pack 1 (SP1) or Windows Server 2003 SP2
The default behavior is to automatically copy customizations from the administrator profile to the default user profile. Therefore, no additional steps are required to customize the profile. You can disable this functionality by setting a parameter in the Sysprep.inf file. This parameter prevents the Minisetup process from copying customizations from the administrator profile. To do this, set the parameter in the "UNATTENDED" section of the Sysprep.inf file as follows:
[UNATTENDED]
UpdateServerProfileDirectory=0
Windows XP Service Pack 3 (SP3) or hofix 887816 is applied
Hotfix 887816 disables the automatic copying of customizations. Therefore, you must configure a parameter in the Sysprep.inf file to enable the Minisetup process to copy the customizations from the administrator profile. To do this, set the parameter in the "UNATTENDED" section, as follows:
[UNATTENDED]
UpdateServerProfileDirectory=1

Note Windows XP SP3 includes hotfix 887816.



                                            
            
SMS 2003 Active Directory System Discovery Tuning

Came across an old link from Niehaus talking about ways to improve your system discovery performance.

http://myitforum.com/cs2/blogs/mniehaus/archive/2005/03/29/4287.aspx

 

Context below:

A discussion thread on the MSSMS discussion list recently talked about ways to improve the performance of AD System Discovery in SMS 2003.  Based on this discussion, I would make these recommendations:

1.  Each time you see an entry in the ADSYSDIS.LOG file that says “Unable to resolve” for a machine, a three-second delay will be added to the discovery process.  This is because Windows has tried to resolve the name via DNS and WINS with no luck, so it then tries a broadcast and waits three seconds for a reply.  This delay can be eliminated if you tell Windows not to do the broadcast.  To do this, modify the NBT node type of the SMS server from an H-node to a P-node.  See http://support.microsoft.com/default.aspx?scid=kb;en-us;160177 for more information.  This is the registry change (which requires a reboot to activate):

[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Netbt\Parameters]
“NodeType”=dword:00000002

As an example, if you have an Active Directory with 10,000 computers and 10% cannot be resolved, this will add 50 minutes (1,000 x 3 / 60) to the total AD System Discovery cycle time.  Want to know how much time is being added in your specific case?  Look at the ADSYSDIS.LOG file and estimate the number of “Unresolved“ messages in each batch of 100 machines (where the log shows a count message every 100 computers).  If it looks like you have 10 messages per every hundred machines, 10% are unresolvable.  (Want an exact number?  Count all the messages.)  An alternative approach is to clean these “garbage” machines out of AD, but that’s usually a different team’s problem so the SMS admin is forced to work around this.

2.  Notice the long delay after the last batch of machines is processed, where no additional messages are logged.  On a larger environment (10,000+ machines) this delay can easily be an hours.  What happens during this time?  This is mostly a result of AD System Discovery expanding all groups that it found while processing machines; it then asks AD to expand the membership of those groups looking for any other machines (possibly from other domains in the same forest) that it might have missed.  In most environments, it’s not going to find any.  Before SMS 2003 SP1, there was no way to disable that checking.  With SP1, there is a new checkbox.  Select the LDAP path that you added on the “Active Directory System Discovery” property page and bring up the properties of that LDAP path.  Uncheck the “Include groups” checkbox.

Your results may vary, but typically these two changes can cut 30-60% of the time required to perform an AD System Discovery cycle. 

It is also important that your AD sites are defined properly so that the SMS server always talks to the closest domain controller (across the LAN, not across the WAN).  If this isn't possible, you can modify the LDAP path to specify which DC to use, but given all the other dependencies on AD sites, it would be better to do it the “right” way.  (Check the ADSYSDIS.LOG to see which domain controller was used.)  As a corollary to this, you may want to avoid setting up primary sites at locations that don't have DCs unless you do not plan to run discovery (only needed if you are targeting advertisements based on AD groups or OUs).

Process Monitoring Tools

Someone on the myitforum list mentioned this tool (YAPM) so i decided to check it out.  It’s pretty neat and feature packed.

Here is the link to site:

http://yaprocmon.sourceforge.net/index.html

Here is a shot of it in action:

image

Someone also mentioned PolyMon:

http://www.codeplex.com/polymonrt

Dashboard_Medium.png

Pretty neat tools, check them out!

-Chris

Finding the OU of a system in SMS/ConfigMgr

Alex Semibratov started up a blog and has a nice post on how to find the actual OU of a computer.  If you have ever looked at the information you will notice you get a lot more than you might be looking for. 

I tested this with SMS 2003 and it works since the same view can be used.  You will want to replace the “SMS_ENT” with your database name however.

Linked here:

http://blogs.msdn.com/alex_semi/archive/2009/07/29/direct-ou-in-sccm.aspx

Here is the basic query if you don’t want to create a new view for it:

 

SELECT     A.ResourceID, A.System_OU_Name0

FROM        dbo.v_RA_System_SystemOUName AS A INNER JOIN

(SELECT    ResourceID, MAX(LEN(System_OU_Name0)) AS len

FROM         dbo.v_RA_System_SystemOUName

GROUP BY ResourceID) AS B ON A.ResourceID= B.ResourceID AND LEN(A.System_OU_Name0) = B.len

 

Here is another query by Casey Robertson that works as well:

 

SELECT ResourceID, MAX(System_OU_Name0)

FROM [database].dbo.v_RA_System_SystemOUName

GROUP BY ResourceID

 

 

Hope this helps,

Chris

ConfigMgr – Dealing with Windows XP Mass Storage Drivers

Roger Zander had posted another nifty way of dealing with mass storage drivers here, basically created a task sequence section that detects the mass storage device and injects the driver.  This is an alternative method to injecting the mass storage driver from within a model specific driver package. For example having a driver package for a Lenovo T61p that includes the Intel Mass storage driver and selecting it, similar to the screenshot below:

image

Here is the link to Roger’s post:

http://myitforum.com/cs2/blogs/rzander/archive/2009/08/07/apply-xp-massstorage-drivers-from-sccm-osd-task-sequence.aspx

 

What i want to do with this post is show you how to take that information above and import it into your existing OSD TS.

 

1) Download and extract out the task sequence so that we have the file we will need to import.

image 

2) Next we need to prepare ourselves for the task sequence, so lets make sure we have a Mass Storage Driver Package created and the appropriate drivers in that package.

image

image

3) Next lets import the task sequence that we downloaded previously

image

Browse to and import the “massstoragedrivers.xml”

image

You’ll first get an error message about an invalid boot image:

image

Then an error message about invalid packages:

image

Click on edit on this screen, and then we can correct the task sequence to point to the correct Mass Storage Driver Package for our site.

Once it loads you’ll have a nice TS with a bunch of errors:

image

Credit due where credit is due! :)

image

So first lets fix the VMware SCSI Controller as an example:

We first need to browse to our Mass Storage Driver Package:

image

Then we need to modify the values to fit the entry we are editing:

image

If for some reason you don’t have a signed driver, you will need to check this box:

image

You can see if you have a signed driver by looking at the driver properties in the console:

image

Now that we’ve modified the VMware SCSI Controller entry, you can see that we have one green check box now:

image

So we need to go through and modify the rest of them so that these TS entries are valid for our environment, I disabled a few that I don’t want to use right now, also the disabled ones are ones that are not in the standard Intel RAID/AHCI drivers.

image

So now we have a TS that contains valid entries for our environment, so i need to incorporate this into an existing TS of mine.

4) Integrating the Mass Storage task sequence steps in an existing OSD task sequence.

Here is a basic Windows XP TS that i’ve added a “Driver Management” category to. (No MDT integration, even though i normally use MDT)

image

The Driver Management category is good because it gives me a place in the TS that i can find when editing it to add my new content. That’s typically how i prefer to manage my TS’s.

First lets export our TS so we can work with it. We need to export our Mass Storage Driver TS and our OSD TS.

image

All exported:

image

Next lets open up our OSD TS with notepad ++ and find the Driver Management section we created:

image

Also, open up the Mass Storage TS.

Now we need to copy the “steps” from the Mass Storage TS to our OSD TS.

You basically want what i’ve detailed in this screen shot (it’s a collapsed view). This is in the Mass Storage task sequence we exported.

image

This will give us a new group and the relevant steps. Basically the information we want to copy over into our existing task sequence.

Lets move this information over to our OSD ts, and we want to place it right below the line i’ve detailed below.

image

This will create a new group and steps underneath it.

image

After we paste this info (collasped view again) you will see that i have a new group called “MassStorage Drivers” underneath my “Driver Management” group:

image

Now lets save the TS, exit notepadd ++, and then we need to import the task sequence back into ConfigMgr.

Next we look at our new OSD TS and see the new “Mass Storage” steps under our “Driver Management” section in our TS.

image

There we go, we now have the new Mass Storage detection section in our Windows XP task sequence.

5) Time to test

6) Test again :)

 

This post should help you be able to configure the information Roger/Richard put together and integrate it into your existing task sequence without too much trouble. I hope this helps, and remember to test :)

-Chris

ConfigMgr - Enabling Asset Intelligence

Based upon the info provided here:

http://blogcastrepository.com/blogs/brian_tucker/archive/2008/02/13/how-to-enable-asset-intelligence-client-access-licensing-in-sccm-2007.aspx

Anyone who has read the whitepapers, knows they aren’t they greatest/clearest on what is really needed.  Brian Tucker put together and nice short and sweet blog (linked above) that details the extra steps needed to enable Asset Intelligence in SCCM.  I noticed that on my ConfigMgr SP2 beta install, the sections in sms_def.mof were already enabled, so that might be fixed in SP2. I did still need to enable the CAL information in the Configuration.mof though.

Here are the main sections in sms_def.mof:

//**************************************************************************
//* Class: SoftwareLicensingService
//* Derived from: (nothing)
//*
//* Key = Version
//*
//* This Asset Intelligence class provides Software Licensing Service information for vista OS.
//*
//**************************************************************************
[ dynamic, provider("SoftwareLicensingService_Provider"),
  SMS_Report     (TRUE),
  SMS_Group_Name ("SW Licensing Service"),
  SMS_Class_ID   ("MICROSOFT|SOFTWARE_LICENSING_SERVICE|1.0") ]
class SoftwareLicensingService
{
    [SMS_Report (TRUE), Key]
    string    Version;
    [SMS_Report (TRUE)]
    string    KeyManagementServiceMachine;
    [SMS_Report (TRUE)]
    uint32    IsKeyManagementServiceMachine;
    [SMS_Report (TRUE)]
    uint32    VLActivationInterval;
    [SMS_Report (TRUE)]
    uint32    VLRenewalInterval;
    [SMS_Report (TRUE)]
    uint32    KeyManagementServiceCurrentCount;
    [SMS_Report (TRUE)]
    uint32    RequiredClientCount ;
    [SMS_Report (TRUE)]
    string    KeyManagementServiceProductKeyID ;
    [SMS_Report (TRUE)]
    uint32    PolicyCacheRefreshRequired ;
    [SMS_Report (TRUE)]
    string    ClientMachineID;
};

//**************************************************************************
//* Class: SoftwareLicensingProduct
//* Derived from: (nothing)
//*
//* Key = ID
//*
//* This Asset Intelligence class provides Software Licensing Product information for vista OS.
//*
//**************************************************************************
[ dynamic, provider("SoftwareLicensingProduct_Provider"),
  SMS_Report     (TRUE),
  SMS_Group_Name ("SW Licensing Product"),
  SMS_Class_ID   ("MICROSOFT|SOFTWARE_LICENSING_PRODUCT|1.0") ]
class SoftwareLicensingProduct
{
    [SMS_Report (TRUE), key]
    string    ID;
    [SMS_Report (TRUE)]
    string    Name;
    [SMS_Report (TRUE)]
    string    Description;
    [SMS_Report (TRUE)]
    string    ApplicationID;
    [SMS_Report (TRUE)]
    string    ProcessorURL;
    [SMS_Report (TRUE)]
    string    MachineURL;
    [SMS_Report (TRUE)]
    string    ProductKeyURL;
    [SMS_Report (TRUE)]
    string    UseLicenseURL;
    [SMS_Report (TRUE)]
    string    OfflineInstallationId;
    [SMS_Report (TRUE)]
    string    PartialProductKey;
    [SMS_Report (TRUE)]
    string    ProductKeyID;
    [SMS_Report (TRUE)]
    uint32    LicenseStatus;
    [SMS_Report (TRUE)]
    uint32    GracePeriodRemaining;
    [SMS_Report (TRUE)]
    datetime   EvaluationEndDate;
};

 

And here is the section in the Configuration.mof:

// CAL tracking server side configurations and policy
[Singleton]
class CCM_CALTrackConfig
{
    uint32   CALCollectionType;
    uint32   CALCollectionFrequencyDays;
    uint32   CALCollectionFrequencyMinutes;
    uint32   CALCollectionTimeWindow;
    string   CALCollectionSupportedWindowsVersions;

};

instance of CCM_CALTrackConfig
{
    CALCollectionType = 3; //0-Disabled, 1-User CAL, 2-Device CAL, 3-All
    CALCollectionFrequencyDays = 7;
    CALCollectionFrequencyMinutes = 60;
    CALCollectionTimeWindow = 90;
    CALCollectionSupportedWindowsVersions = "5.0,5.2,6.0";

};

ConfigMgr Task Sequence for XP Mass Storage Drivers

I caught this posting here today and thought it was good information.  This is just yet another way you can handle mass storage drivers with Windows XP and SCCM.

http://myitforum.com/cs2/blogs/rzander/archive/2009/08/07/apply-xp-massstorage-drivers-from-sccm-osd-task-sequence.aspx

ConfigMgr SP2 Bug – Deploying Win7 – USMT errors

Thanks to Greg Ramsey with his help in troubleshooting this issue.

When testing deploying Win7 through ConfigMgr, I could deploy the OS fine in a bare metal scenarion, but I couldn’t for the life of me get a refresh to work.  If i disabled the USMT components then i could refresh the computer.  This was regardless of MDT integration or not.  For testing purposes i stripped out the MDT integration in the TS and was just simply deploying the OS and and utilizing USMT 4. 

The noticeable error in the logs was that migsys.xml was missing.  Apparently ConfigMgr still looks for this file even though USMT 4 does not use this file any longer.  Also, i was seeing errors in the logs about ConfigMgt not being able to find the files it needed for USMT to run.

So, there are 2 steps to resolve this issue.

1) Copy the contents of the USMT folder from the AIK to your USMT source folder. I copied the contents of the x86 directory to the root of my USMT source folder and then i also copied the x86 folder into the source folder, so the source folder has double content, one in the root, and one in the x86 folder.

2) I created a blank migsys.xml

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

 

After i completed these steps, i was able to successfully refresh my Win7 machine.

SMS 2003 OSD from RIS/WDS

The information provided below is provided “as-is”.  Proceed at your own risk.

Initial Configuration Steps

I will not go into detail on these and will assume you have already completed these steps.

1) Install and configure RIS/WDS

2) Authorize server in DHCP and configure scope options

3) Configure Group Policy options –

a. Automatic setup is for flat files

b. Tools/Troubleshooting for RAMdisk

4) Your Windows PE version is 2005 based upon Server 2003 SP1 media

 

Deploy Windows PE from a RIS server by using a RAM disk

1. On the RIS server, locate the \RemoteInstall\Setup\Language\Images folder.

2. Create a subfolder for Windows PE. For example, type the following at a command prompt:

drive:\Cd \RemoteInstall\Setup\English\Images md winpe

Note In this step, drive is the placeholder of the hard disk drive on which RIS is installed. Language is the language of the Windows PE image.

3. Create a subfolder in the \Windows PE folder that is named Platform, where platform is i386 or amd64. For example, type the following command at the command prompt: md winpe\i386

4. Copy the customized Windows PE .iso image file that you created earlier to the Windows PE\Platform folder, where platform is i386 or amd64. For example, type the following command at the command prompt:

copy drive:\Work\Winpex86.iso drive 1:\RemoteInstall\Setup\English\Images\Winpe\i386

Note drive is the placeholder of the hard disk that contains the Windows PE image. Also, drive 1 is a placeholder for the hard disk partition on which RIS is installed.

5. Create a subfolder in the \Windows PE\Platform folder that is named Templates. For example, type the following command at the command prompt:

md winpe\i386\templates

6. Locate the Platform folder of the Windows PE image, and then copy Ntdetect.com and Startrom.com to the Windows PE\Platform\Templates folder. For example, type the following commands at the command prompt:

drive:\ cd \winpe\i386 copy ntdetect.com
drive 1:\RemoteInstall\Setup\English\Images\winpe\i386\templates copy startrom.com
drive 1:\RemoteInstall\Setup\English\Images\winpe\i386\templates

Note In this step, drive is the placeholder of the hard disk that contains the Windows PE image and drive 1 is a placeholder for the hard disk partition on which RIS is installed.

7. Copy the \Platform\Setupldr.exe (not Setupldr.bin) file from the Windows PE image to the \Windows PE\platform\templates folder, and then rename Setupldr.exe to Ntldr. For example, run the following command at the command prompt:

copy setupldr.exe drive 1:\RemoteInstall\Setup\English\Images\winpe\i386\templates\ntldr

.
Note In this step, drive 1 is a placeholder for the hard disk partition on which RIS is installed.

8. Create a text file that is named Winnt.sif in the \Windows PE\Platform\Templates folder by using the following text.

[SetupData]

BootDevice = "ramdisk(0)"

BootPath = "\platform\System32\"

OsLoadOptions = "/noguiboot /fastdetect /minint /rdexportascd /rdpath=%INSTALLPATH%\%MACHINETYPE%\<bootimage>"

Architecture = "platform"

[RemoteInstall]

Repartition = No

[OSChooser]

Description = "brief description"

Help = "longer description"

LaunchFile = "%INSTALLPATH%\%MACHINETYPE%\templates\startrom.com"

ImageType = Flat

Version = "5.2 (0)"

 

9. Start a RIS client, and then select the operating system image that you created.

 

Notes from Microsoft:

· RAM disk method supports only x86 and x64-based Windows PE ISO images. For Itanium (IA-64)-based Windows PE ISO images use Method 2.

· You can put the i386 and amd64 folders within the same folder on a RIS server. For example, you can create the following folder structure:

\RemoteInstall\Setup\English\Images\Winpe\i386 \RemoteInstall\Setup\English\Images\Winpe\Amd64

· You can give the Winnt.sif file any name that you want as long as the file name extension is .sif.

· The "Repartition = No" entry in the Winnt.sif file avoids a warning from the Client Installation Wizard (OSChooser) about the disk being erased.

· The text for the "Description" and "Help" entries can be any information that you want to include.

· The "LaunchFile" and "ImageType" entries must not change.

Restart the client, and then go into PXE startup. After you log on, select the Maintenance and Troubleshooting option in the Main menu. "Windows PE in RAMDisk," or whatever other description exists in the .sif file, appears as an option. Select this option, and then press ENTER.

 

Copying ISO

Copy SMS 2003 OSD ISO image to \RemoteInstall\Setup\English\Images\WinPE2005_OSD\i386

Sample winnt.sif

[SetupData]

BootDevice = "ramdisk(0)"

BootPath = "\i386\System32\"

OsLoadOptions = "/noguiboot /fastdetect /minint /rdexportascd /rdpath=%INSTALLPATH%\%MACHINETYPE%\osd_image_install_mdt.iso"

Architecture = "i386"

[RemoteInstall]

Repartition = No

[OSChooser]

Description = "WinPE 2005 OSD Disk"

Help = "Windows PE 2005 OSD Disk"

LaunchFile = "%INSTALLPATH%\%MACHINETYPE%\templates\startrom.com"

ImageType = WinPE

Version = "5.2 (0)"

 

clip_image002

clip_image002[4]

Funny USMT error

So i got this error today in my smsts.log.

Pretty much decided that’s enough for one day after i saw this error message.

 

image

Yup, time to go home!

-Chris

Posted: Aug 06 2009, 02:28 PM by cnackers | with no comments
Filed under: , ,
SMS 2003 – Inventory Local Installed Printers

This information is provided as is.  Do not perform any of the steps below if you are not familiar with the processes!

 

In order to show the local printers installed on computers we need to first enable discovery of that information.  This will require modifying the sms_def.mof to enable the information we want collected.

Go to your \SMS\inboxes\clifiles.src\hinv and open up your sms_def.mof, once you have your MOF open, then search for “win32_printer” and you should jump to the “Printer Device” section:

image

Under this section you will see [SMS_Report (FALSE)     ]  sections.  You will need to change the false to true for any section you want to pull information from.

Here are the sections i recommend you enable (DO NOT DELETE ANYTHING):


    [SMS_Report (TRUE)     ]
        string     Description;
    [SMS_Report (TRUE), key]
        string     DeviceID;
    [SMS_Report (TRUE)     ]
        string     DriverName;
        string     Location;
    [SMS_Report (TRUE)     ]
        string     Name;
    [SMS_Report (TRUE)     ]
        string     PortName;

Once you have made these changes, you can save and exit the MOF.  Once your clients run their next hardware inventory cycle, then you should have information in the DB that you can now query in a web report or in SQL query analyzer.

The information will show up under v_gs_printer_device

One web report I have created is “Show All Local Printers”, here is the query i use for this report.

select netbios_name0, pri.name0, drivername0, portname0
from v_gs_printer_Device pri
join v_r_system on pri.resourceid = v_r_system.resourceid
where drivername0 NOT LIKE '%PDF%' AND
drivername0 NOT LIKE '%MICROSOFT%' AND
drivername0 NOT LIKE 'Biscom FAX%' AND
drivername0 NOT LIKE 'SnagIT%'
order by netbios_name0

You can see i exempted out a few things that are common in our environment, you may have others you might need to exempt from the results.

Hope this helps,

Chris