December 7 2011

Set custom SCCM task sequence variable to client DHCP server

I had a requirement to be able set a custom SCCM Task Sequence variable to the value (IP address) of the DHCP server that had issued the IP address to the client . This meant that later in the Task Sequence I could re-use this value for other things, in this case it was to map a network drive, eg \%DHCP_Server%temp. I used a VB script to set this:

' Purpose: Set SCCM task sequence variable 'DHCP_Server' to the value of the DHCP server IP address
' Date: 06/12/2011
' Version: 1.0

strComputer = "."

' Create Task Sequence environment object
dim osd: set env = CreateObject("Microsoft.SMS.TSEnvironment")

Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\" & strComputer & "rootcimv2")

' Find active network adapter
Set colAdapters = objWMIService.ExecQuery _
("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")
n = 1

For Each objAdapter in colAdapters

' Set variable in the Operating System Deployment environment
env("DHCP_Server") = objAdapter.DHCPServer

n = n + 1
Next

When you dump out the Task Sequence variables, you can then see it at the top of the list:

DHCP_Server=10.0.0.1
SMSTSDisableWow64Redirection=false
P0000012=file:VOL001:sources
WorkingDirectory=s:
_SMSMediaGuid=2BB82B7E-0BE0-48D7-9AC2-3DE93F726D71
_SMSTSAdvertID=P00200F6
_SMSTSBootImageID=P000005F
_SMSTSBootMediaPackageID=P0000012
_SMSTSBootMediaSourceVersion=2
…….
…….
…….
…….



----------------------------------------------------------------------------
I use a maximum of one Google Ad per post to help offset some of my blog hosting costs.

----------------------------------------------------------------------------

April 21 2010

Considerations when scripting for 64-bit machines with SCCM

As Microsoft 64-bit client Operating Systems become more common, we need to ensure we are covering all combinations when scripting in general as well as within SCCM programs. I wanted to highlight a recent situation where I couldn’t figure out why my script couldn’t write to the %systemroot%System32 folder on a 64 bit Windows 7 workstation. Then it clicked – whenever a 32-bit application attempts to access %windir%System32, the access is redirected to %windir%SysWOW64 – and don’t forget – the SCCM client is 32-bit!

32-bit applications can access the native system directory by substituting %windir%Sysnative for %windir%System32. WOW64 recognizes Sysnative as a special alias used to indicate that the file system should not redirect the access.

There are some good references here, here and here.

As a separate but related topic, I think it’s worthwhile pointing out this relatively new post at MyITForum that relates to UNC paths within batch files. Most people will tell you that UNC paths are not supported in a batch file – well that isn’t necessarily the case – “%~dp0” is a variable that can be used in your batch file that will give you the full UNC path of where your script is being run from. From more info, see this post http://www.myitforum.com/absolutenm/templates/Articles.aspx?articleid=15520&zoneid=87