# Tuesday, October 16, 2007

I've been using BDD 2007 a lot lately and I thought it would be nice to get live logging details from BDD rather than using the many .log files that are created. After searching around for possible solution I settled on using a combination of a C# application using HttpListener and a vbscript using MSXML2.ServerXMLHTTP. The logging application is shown below.

To setup the remote logger is fairly simple and the files needed are included below. To use the remote logger do the following:

  1. Download BDD Remote Logger.zip
  2. Copy ZTIGather.xml and ZTIUtility.vbs into your Distribution$\Scripts directory. Do a file compare if you are interested in the changes. There is an addition properity added to ZTIGather.xml called RemoteLogURL and a few lines added to the Logging Class in ZTIUtility.vbs.
  3. Add RemoteLogURL=http://yourmachine:8081/
  4. Start BDDRemoteLogger.exe and ensure that the url prefix is the name of your machine. The URL Prefix in BDDRemoteLogger must match what you have in your RemoteLogURL value.
  5. Click start on BDDRemoteLogger and Run BDD as normal.

If you run BDD with RemoteLogURL present and you BDDRemoteLogger is not listening for requests then it will considerably slow down the BDD logging (approximately 1sec per entry). So if RemoteLogURL is present in Bootstrap.ini then make sure you have the logger running. If RemoteLogURL is not present BDD will run as norma.

If you've got any questions or comments please comment to this post.

BDD Remote Logger.zip (25.5 KB)
posted on Tuesday, October 16, 2007 12:23:08 PM (E. Australia Standard Time, UTC+10:00)  #    Comments [2]
# Friday, September 21, 2007

Last week I needed to add a large number of hotfixes to the Task Sequencer for an XP BDD 2007 build. After adding the first few by hand I quickly sought after an easier method. As I result I came up with the code below. Althougth it may not be that useful to anyone else I thought I'd post it anyway so people can start to see what is possible using Powershell with BDD.

To use this function as is you need to have a Security Updates group in the task sequencer already. Then create a directory called Hotfixes under Applications in your Distribution point. Download the hotfix into the hotfixes directory and then run Add-Hotfix "hotfixname" "Path to TS.xml". So for a hotfix called WindowsXP-KB923191-x86-ENU.exe you would type something like: Add-Hotfix "WindowsXP-KB923191-x86-ENU" "C:\Data\TS.xml"

function Add-Hotfix ([string] $hotfix, [string]$TSFile) {
   $ts = [xml](Get-Content -read -1 $TSFile)
   $updates = $ts.psbase.SelectSingleNode("//group[@name='Security Updates']")

   $step = $ts.CreateElement("step")

   $name = $ts.CreateAttribute("name")
   $name.psbase.Value = "Microsoft Update - " + $hotfix
   $step.SetAttributeNode($name)

   $disable = $ts.CreateAttribute("disable")
   $disable.psbase.Value = "false"
   $step.SetAttributeNode($disable)

   $continueOnError = $ts.CreateAttribute("continueOnError")
   $continueOnError.psbase.Value = "false"
   $step.SetAttributeNode($continueOnError)

   $successCodeList
= $ts.CreateAttribute("successCodeList")
   $successCodeList.psbase.Value = "0 3010"
   $step.SetAttributeNode($successCodeList)

   $description
= $ts.CreateAttribute("description")
   $description.psbase.Value = ""
   $step.SetAttributeNode($description)
   
   $startIn
= $ts.CreateAttribute("startIn")
   $startIn.psbase.Value = "%DEPLOYROOT%\Applications\Hotfixes"$step.SetAttributeNode($startIn)

   $action
= $ts.CreateElement("action")
   $action.psbase.InnerText = $hotfix + ".exe /quiet /passive /norestart"
   $step.AppendChild($action)

   $updates
.AppendChild($step)
   
   $ts
.Save($TSFile)
}

posted on Friday, September 21, 2007 1:56:09 PM (E. Australia Standard Time, UTC+10:00)  #    Comments [0]
# Thursday, September 06, 2007

The virtual machine that I have been using to do some Desktop Deployment work ran out of space today. I notice the directories taking up all the space where the RemoteInstall and Distribution directories that belong to BDD and WDS. So I decided to add another virtual disk and move those two directories.

WDS
Moving WDS was easy, stop the WDS service then do the following:

  1. Cut and Past the RemoteInstall Directory to where you'd like it.
  2. Reshare the RemoteInstall directory as REMINST
  3. Open regedit and change HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\TFTPD\Parameters\Directory to the new location of RemoteInstall.
  4. Start WDS and you're away.

BDD 2007
BDD 2007 was fairly striaght forward was well. Make sure you've closed the workbench and do the following:

  1. Move the Distribution directory to where you'd like it.
  2. Open regedit and change HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\BDD 2007\Distribution_Dir to the new location of the Distrubution directory.

You can also rename these directories as well.

There, that was fairly painless.

posted on Thursday, September 06, 2007 2:35:14 PM (E. Australia Standard Time, UTC+10:00)  #    Comments [0]
# Wednesday, September 05, 2007

I've been working with Windows System Image Manager today and found myself searching around for the right input locale to use for Australia.

Microsoft have a list of the right locales to use at http://msdn2.microsoft.com/en-us/library/ms776260.aspx

For us aussies,
Locale identifier:0x0c09
Locale: English (Australia)
Locale name: en-AU
Script tag: Latn
ANSI code page: 1252

posted on Wednesday, September 05, 2007 2:29:18 PM (E. Australia Standard Time, UTC+10:00)  #    Comments [0]
# Monday, August 20, 2007

So you may have noticed a few asthetic changes to my blog but as well as this I've upgraded it to dasBlog 2.0. I must say the upgrade was fairly painless.

I've been making small but noticable changes to the layout of the site. This will continue until I'm happy with what will be come a new theme I'll send it to be included with dasBlog.

posted on Monday, August 20, 2007 7:56:26 AM (E. Australia Standard Time, UTC+10:00)  #    Comments [0]
# Wednesday, August 15, 2007

I've recently installed Exchange 2007 and have been trying to get ActiveSyn up and running to sync with my Palm Treo 750. I knew that Exchange 2007 comes with a self-signed cert but didn't know how to get at it or import it into Windows Mobile. Fortunatley the proceedure is very simple and is detailed here.

In case you are wondering the brief steps are as follows:

  1. Open IIS and go to the Directory Security Tab of the Default Website.
  2. View the Certificate and Click the "Export to File" button.
  3. Accept the default options and save the cerificate somewhere you can remember.

To import into Windows Mobile:

  1. Copy the .cer file to your Windows Mobile device.
  2. Using the File Explorer on the device locate and open the .cer file.
  3. Select yes.

Enjoy!

posted on Wednesday, August 15, 2007 9:40:23 PM (E. Australia Standard Time, UTC+10:00)  #    Comments [0]
# Monday, July 30, 2007

Today I found myself clicking through a large number of text files containing information from Cisco switches. The text files contained a show run, show ver, show cdp neighbours and show interface status.

The customer wanted to know which interfaces had been hard-coded for speed or duplex and which interfaces had auto-negotiated to half duplex. After doing the first two by hand I realized Powershell could accomplish this quite quickly.

Get-ChildItem -Recurse -Filter "show-run.txt" | Select-String "speed","duplex"

And the results:
172.16.3.101\show-run.txt:50: duplex half
172.16.3.101\show-run.txt:51: speed 100
172.16.3.103\show-run.txt:35: speed 10
172.16.3.103\show-run.txt:45: duplex half
172.16.3.103\show-run.txt:46: speed 10
172.16.3.103\show-run.txt:98: duplex full
172.16.3.103\show-run.txt:99: speed 100
172.16.3.166\show-run.txt:41: duplex half
172.16.3.166\show-run.txt:42: speed 100

To find the interfaces that have negotiated at half duplex:
Get-ChildItem -Recurse -Filter "show-int.txt" | Select-String "half"

The Results:
172.16.3.101\show-int.txt:10:Fa0/6                      notconnect   1          Half     100 100BaseTX/FX
172.16.3.101\show-int.txt:21:Fa0/17                     connected    1        A-Half    A-10 100BaseTX/FX
172.16.3.101\show-int.txt:32:Gi0/1                      connected    1        A-Half    1000 CX_GIGASTACK
172.16.3.102\show-int.txt:32:Gi0/1                      connected    1        A-Half    1000 CX_GIGASTACK
172.16.3.103\show-int.txt:6:Fa0/4                      connected    1          Half      10 100BaseTX/FX
172.16.3.106\show-int.txt:5:Fa0/1                      connected    1        A-Half   A-100 100BaseTX/FX
172.16.3.107\show-int.txt:32:Gi0/1                      connected    1        A-Half    1000 CX_GIGASTACK
172.16.3.121\show-int.txt:32:Gi1/1                      connected    1        A-Half    1000 CX_GIGASTACK
172.16.3.123\show-int.txt:32:Gi0/1                      connected    1        A-Half    1000 CX_GIGASTACK
172.16.3.164\show-int.txt:33:Gi0/2                      connected    1        A-Half    1000 CX_GIGASTACK
172.16.3.166\show-int.txt:5:Fa0/1                      notconnect   1          Half     100 100BaseTX/FX
172.16.3.166\show-int.txt:32:Gi0/1                      connected    1        A-Half    1000 CX_GIGASTACK
172.16.3.169\show-int.txt:33:Gi0/2                      connected    1        A-Half    1000 CX_GIGASTACK
176.16.3.122\show-int.txt:31:Fa0/24                     connected    1        A-Half   A-100 100BaseTX/FX
...
Just saved myself half an hour of clicking through txt files!

posted on Monday, July 30, 2007 1:31:30 PM (E. Australia Standard Time, UTC+10:00)  #    Comments [0]
# Tuesday, June 12, 2007

I noticed today that WinPE 2, like all the WinPEs before it, does not have a built in network card driver for VMWare. Now you could add a driver to WinPE 2 by using the peimg /inf command but I just wanted to test something really quickly and didn't want the hastle of making a new WinPE 2 disk.

So I discovered you can tell VMWare to use emulate an Intel e1000 network card which works great with WinPE 2. Just add ethernet0.VirtualDev = "e1000" to your .vmx file!!

posted on Tuesday, June 12, 2007 3:50:18 PM (E. Australia Standard Time, UTC+10:00)  #    Comments [0]
# Wednesday, May 30, 2007

Most antivirus products these days have a unique ID stored in the registry so that management consoles can distinguish the clients. In you are using some form of cloning in your organisation this can cause problems with clients not updating or reporting back to the management console.

This week I ran into this very issue with eTrustITM v8. Fortunately all you need to do is delete a couple of ID values from the registry before running sysprep.

For eTrustITM delete the following key:
HKEY_LOCAL_MACHINE\SOFTWARE\ComputerAssociates\eTrustITM\CurrentVersion\ID

For eTrust Antivirus delete the following:
HKEY_LOCAL_MACHINE\SOFTWARE\ComputerAssociates\eTrustAntivirus\CurrentVersion\ID

Remember to do this immediately before running sysprep otherwise the clients will register again, particularly if you do a reboot before running sysprep. In my builds I usually have a sysprep.cmd that deletes keys like this and then runs sysprep.exe.

posted on Wednesday, May 30, 2007 11:59:40 AM (E. Australia Standard Time, UTC+10:00)  #    Comments [0]
# Wednesday, May 09, 2007

It looks like there is already a lot of good information out there about System Center Essentials 2007. Here are a few of handy spots I have found already:

Know of any other great resources??

posted on Wednesday, May 09, 2007 11:39:19 PM (E. Australia Standard Time, UTC+10:00)  #    Comments [0]