Automatically Update MDT 2010 Boot Images in WDS

I’ve been pretty busy lately getting Microsoft Deployment Toolkit set up here at the office.  We’re going to use MDT to deploy Windows 7 without creating images.  On top of that, we’re going to use WDS to serve up the boot disks from MDT over the network.

So, every time you make a change in MDT, you have to update the deployment point, which in most cases will regenerate the boot wims.  When you have four deployment points, this can be a pain just to update a task sequence.  After a bit of Googling, I found this:

You’ve probably gone through this cycle if you are using WDS to PXE boot computers to start bare metal Lite Touch deployments:

  • Import new drivers or change bootstrap.ini.
  • “Update deployment share” to generate new WIMs.
  • Import new WIMs into WDS.

Fortunately, with the new “update” process in MDT 2010 … it’s pretty simple to add a script to automate this process.

So, there’s a script you can create to do this job for you.  For posterity, the procedure is copied below.

First, create a script file – we’ll call it “UpdateExit.vbs” – and save it – we’ll save it in C:\Scripts\ for the purpose of this demonstration.  Paste the following into UpdateExit.vbs:

Option Explicit

Dim oShell, oEnv

Set oShell = CreateObject("WScript.Shell")
Set oEnv = oShell.Environment("PROCESS")

If oEnv("STAGE") = "ISO" then

    Dim sCmd, rc

    sCmd = "WDSUTIL /Replace-Image /Image:""Lite Touch Windows PE (" & oEnv("PLATFORM") & ")"" /ImageType:Boot /Architecture:" & oEnv("PLATFORM") & " /ReplacementImage /ImageFile:""" & oEnv("CONTENT") & "\Sources\Boot.wim"""
    WScript.Echo "About to run command: " & sCmd

    rc = oShell.Run(sCmd, 0, true)
    WScript.Echo "WDSUTIL rc = " & CStr(rc)

    WScript.Quit 1

End if

Now, edit “C:\Program Files\Microsoft Deployment Toolkit\Templates\LiteTouchPE.xml” and change the following (starting around line 90):

<!– Exits –>
<Exits>
  <Exit>cscript.exe "%INSTALLDIR%\Samples\UpdateExit.vbs"</Exit>
</Exits>

to look like this:

<!– Exits –>
<Exits>
  <Exit>cscript.exe "%INSTALLDIR%\Samples\UpdateExit.vbs"</Exit>
  <Exit>cscript.exe "C:\Scripts\UpdateExit.vbs"</Exit>
</Exits>

Instructions are include in the link above if MDT is installed on a different server than WDS.

Credit: Automatically Update MDT 2010 boot images in WDS

Piwik: Open Source Web Analytics

PiwikI was asked recently if it was possible to track statistics (easily) to find out where visitors are from, what browser they use, how long they hung around a site, etc.  At first, I didn’t know the answer, but came across a blog article touting something called Open Web Analytics (OWA).  That sounded good, so I looked into it – and even went so far as to install it.  However, I had absolutely no luck in getting it to run on my Windows server.  I looked around Google for about 30 minutes, but couldn’t find any answers.  Their website wasn’t much help – their wiki was pretty much empty and they had no forums (and I can’t begin to explain how I loathe mailing list support).  Apparently it’s developed for a Linux installation.

Anyway, after another Google session, I found something called Piwik.  Funny name, serious analytics.  Their mission is to create an open source Google Analytics replacement.  I’m not so much concerned with the GA replacement part as I am with the fact that I can host it on my own server – my own database where I can control (and be assured no one is giving up my data).  Now, I’m not saying that Piwik is quite at the level of GA yet, but they are sure on their way.  So much on their way, that I’ve already implemented Piwik on my sites and blogs (they have a WordPress plugin!) to get a good feel for it.  So far, I’m fairly impressed.

Give it a try.  Installation takes about five minutes (and reminds me a lot of installing WordPress), and configuration is as easy as typing in the site’s URL that is to be tracked, and pasting the JavaScript snippet on to your pages.  And, if you’re savvy, they have an open API that can be used to get to your data.

I’ll try to remember to write more later as Piwik gathers more data for me to dig through.

Opinion: The Unspoken Truth About Managing Geeks

I think that all users (and maybe even some IT professionals) should read this article.  Maybe then, us geeks will have a little understanding.  Jeff Ello at Computerworld writes:

Few people notice this, but for IT groups respect is the currency of the realm. IT pros do not squander this currency. Those whom they do not believe are worthy of their respect might instead be treated to professional courtesy, a friendly demeanor or the acceptance of authority. Gaining respect is not a matter of being the boss and has nothing to do with being likeable or sociable; whether you talk, eat or smell right; or any measure that isn’t directly related to the work. The amount of respect an IT pro pays someone is a measure of how tolerable that person is when it comes to getting things done, including the elegance and practicality of his solutions and suggestions. IT pros always and without fail, quietly self-organize around those who make the work easier, while shunning those who make the work harder, independent of the organizational chart.

Opinion: The unspoken truth about managing geeks

Configuring Existing App-V Sequences for the 4.6 Client Beta

I’ve seen a lot of buzz lately on the release of the App-V 4.6 Public Beta.  Of course, I downloaded the new 4.6 clients because the most exciting feature (to me) in it is support for 64-bit App-V clients.

The second most exciting feature (to me) is the support for packages sequenced with 4.5 to be played on 4.6 clients (even the x64 client!).  The problem I had this morning, though, was there are a ton of blogs touting this support, but no one bothered to publish how.  For instance, from The App-V Team Blog:

All your pre-4.6 packages are valid and can continue to be used on the 4.6 client – just modify the OSD file to include the OS values for the 32 and/or 64-bit platform as target, as appropriate.

So, it can be done, but how do I include support for Windows 7 x64 clients in the OSD?  Like this:

Your current OSD files have a section that includes something similar to the following:

<OS VALUE=”WinXP”/>
<OS VALUE=”Win7″/>

This indicates that the package is available for all Windows XP and Windows 7 clients (32-bit of course, because version 4.5 does not support 64-bit).  So, add the following to your OSD file under the last “OS VALUE” entry to enable support for Windows 7 x64:

<OS VALUE=”Win764″/>

And here’s a list of all the available target operating systems:

<OS VALUE=”Win2003TS”/>
<OS VALUE=”Win2003TS64″/>
<OS VALUE=”Win2008R2TS64″/>
<OS VALUE=”Win2008TS”/>
<OS VALUE=”Win2008TS64″/>
<OS VALUE=”Win7″/>
<OS VALUE=”Win764″/>
<OS VALUE=”WinVista”/>
<OS VALUE=”WinVista64″/>
<OS VALUE=”WinXP”/>
<OS VALUE=”WinXP64″/>

Best Practice: Cabling an EXP810 to a DS4700

We’ve been expanding our storage capacity here at work in the recent weeks.  As such, cabling all of these IBM DS4700s and their associated EXP810s (full of glorious fiber channel and SATA drives) became a task.

The question has always been how best to cable the fiber that keeps all this stuff working properly.  You see, each DS4700 (the controlling enclosure) has two fiber controllers, each with two HBAs for connecting the EXP810 expansion enclosures.  Well, we came across an IBM document that details exactly how they recommend cabling – and here it is.  And here is the recommendation for a DS4700 with its maximum number (six) of expansion EXP810s (click for a larger view):

ds4700exp810cable

WIM2VHD

In looking for an easy way to deploy operating systems to virtual servers, I started digging around for a way to import a WIM (like what comes on the 2008 installation DVD) into SCVMM’s library.  Instead, I found something that might be a bit better (or at least more versatile): the WIM to VHD Converter.

The Windows(R) Image to Virtual Hard Disk (WIM2VHD) command-line tool allows you to create sysprepped VHD images from any Windows 7 installation source. VHDs created by WIM2VHD will boot directly to the Out Of Box Experience, ready for your first-use customizations. You can also automate the OOBE by supplying your own unattend.xml file, making the possibilities limitless.

It took about ten minutes for WIM2VHD to deploy my WIM source to a usable VHD, which I then copied into the VMM library.  About an hour later (stupid refresh interval), the newly created VHD was available.  When I deployed a new virtual machine with that VHD, it was as if I had just installed Server 2008 with the DVD.  Awesome.

Wassup Returns

Back in March, when I was just switching to my, then, new IIS server, I had some issues with a plugin called Wassup.  More specifically, the plugin was causing some major performance issues and caused my blog to take several seconds to load.

Well, now three months later, they seem to have addressed this issue.  From a post on their support forum (quoting a member there named vlogoution):

I had this problem too, and what’s causing it are the several calls made by Wassup to php’s gethostbyaddr function which does the host lookup. The problem is at its worst if the function can’t find the host name (ie. on a local LAN). To solve it, I basically changed every call to gethostbyaddr in wassup.php to call “gethost”, which I’ve included below. This still uses gethostbyaddr, but it caches the calls on each run with a local cache and by using memcached (if enabled and available with the object-cache.php dropin). Ideally, it would probably be better to code an nslookup (for windows) or host call for linux, but for now this is working for me just fine. Another way would be to cache/store the host lookups in the database for a period of time. Hopefully the author of Wassup will look to include this patch (or some even better variation) in a future release. I believe the poor performance of this one function call is holding back the high potential of this plugin.

(I placed the function just below the “global $wp_version;” statement in wassup.php:

function gethost($ip) {
//much faster cached replacement for gethostbyaddr - http://us3.php.net/gethostbyaddr
global $dns_cache;
if ($dns_cache[$ip]) {
return $dns_cache[$ip];
} else {
if (!$dns = wp_cache_get( $ip, 'dns', 216000 ) ) {
$dns = gethostbyaddr($ip);
wp_cache_add( $ip, $dns, 'dns', 216000 );
}
$dns_cache[$ip] = $dns;
return $dns;
}
}

And so it seems that they have implemented the patch (or some variation thereof) mentioned above to fix the issue.  I’m happy to report that I’m now running Wassup again (and am pretty happy about it).

Full post in the support forum.

Refreshing App-V Publishing Server

We’re in the middle of checking out App-V from Microsoft’s MDOP.  At the moment, the deployment is limited to IT (and a fraction of IT at that).  We’ve already figured out a lot of cool things about it, but we’ve also run across a few annoying things.  In any case, I’ve run across something those testing might want to keep in mind.  I wouldn’t call it a bug – the design is probably purposeful – but it’s something to be aware of.

appvconsolerefreshGenerally, the App-V Client refreshes the applications published to a user at log on.  This, of course, means valuable seconds/minutes are wasted waiting for the machine to log off and back on.  So, of course, there is a way to manually refresh the published applications via the App-V Client Console.

As any good administrator does (yeah, right), they do not set themselves as a local administrator for the machine they are using.  In order to access some of the “administrative-y” features of the App-V Client Console (such as the option to delete an application from the client), one must “Run as Administrator” – assuming they aren’t a local administrator.

Here’s the kicker: if you’ve opened the console as an administrator (using “Run as…”) and refresh the published applications, you’ll be updating it based on the user’s credentials you’ve provided.  If you’re running the console under the logged in user’s credentials, you’ll be updating the applications based on the applications published to that user.

I’ll admit this does sound like an obvious conclusion, but for those of us who choose not to be local administrators it seems a bit confusing.  Just remember: the console updates based on user – not machine (because the applications are published based on a user and not a computer account).

WordPress Upgrade

As anyone remotely familiar with WordPress 2.7 will know, 2.7 introduced a very cool feature: the automatic upgrade.  This is cool for a few reasons.  First and foremost, it prevents the blog owner from having to manually copy the new version over to their web server.

In any case, it’s quite annoying when you administer four blogs and all but one detect the updated version.  You see, WordPress is on a 12 hour update-check.  So, you could conceivably be forced to wait for up to 12 hours for your WordPress installation to detect that it needs to be upgraded.  Not anymore!

If you have access to your raw database, you can browse to the wp_options table.  In that table will be a row called update_core.  Delete this row.  Now, I will give this disclaimer (as any good technical advice does): BACKUP! before you do anything to your database.  After you’ve deleted said row, refresh your dashboard (you don’t even have to log out and back in) and look at the top for your upgrade notification.

I’ve seen some message boards that suggest altering this row.  This is bad for a number of reasons, not the least of which is the fact that the update_core data itself is serialized and you can break your installation if you screw up.

Now, I say all of this to say this: WordPress 2.8 is pretty cool.  Check here for a complete list of the new features.  Now, an excerpt:

On June 10th, 2009, WordPress Version 2.8, named for noted trumpeter and vocalist Chet Baker, was released to the public. For more information on this enhancement and bug-fix release, read the Development Blog Announcement and see the Changelog for 2.8.

DVD Region

In my playings-around with Windows 7, I’ve really loved the fact that it plays DVDs and AVIs nativly with no extra codecs or applications.  I have to tell you, it’s really nice to be able to just pop a DVD in and have it play automagically.  Until this happens:

capture

Now, if you don’t get it at first, read it again.  Anyway, I was forced to reset my region to 1 (from 1), taking up one of the five changes that I’m allowed.  Not that I’m going to be changing my region to anything else, but still, I find this dialog box humorous.