IThastobecool.com Geeks have opinions too!

12Aug/090

MDT 2010 beta 2 new features coverage

Well, I’m not going to re-invent the wheel here, seeing as Michael Niehaus (the lead engingeer on MDT) already wrote very very nice articles on the new features of MDT 2010 beta 2.

New features 1 to 11

New features 12 to 18

2Jul/090

Sysprepping 2008 and Vista installations: How-To

Well, howto sysprep 2003 and XP installations is a walk in the park, everyone knows that… but sysprepping a Windows 2008,Vista or 7/2008R2 installation is a bit more difficult.

Here’s what you do:
Use this sample sysprep.xml file, modify the values to your needs, add some stuff, remove some stuff. I’ll explain in brief what the sysprep.xml does ;)

<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
<settings pass="specialize">
    <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <ComputerName>*</ComputerName>
      <RegisteredOrganization>Henk</RegisteredOrganization>
      <RegisteredOwner>Henk</RegisteredOwner>
      <ShowWindowsLive>false</ShowWindowsLive>
      <ProductKey>AAAAA-BBBBB-CCCCC-DDDDD-EEEEE</ProductKey>
    </component>
    <component name="Microsoft-Windows-Security-Licensing-SLC-UX" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <SkipAutoActivation>true</SkipAutoActivation>
    </component>
    <component name="Microsoft-Windows-IE-ESC" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <IEHardenAdmin>false</IEHardenAdmin>
      <IEHardenUser>false</IEHardenUser>
    </component>
  </settings>
  <settings pass="oobeSystem">
    <component name="Microsoft-Windows-International-Core" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <InputLocale>0409:00000409</InputLocale>
      <SystemLocale>en-us</SystemLocale>
      <UILanguage>en-us</UILanguage>
      <UserLocale>en-us</UserLocale>
    </component>
    <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <RegisteredOrganization>Henk</RegisteredOrganization>
      <RegisteredOwner>Henk</RegisteredOwner>
      <UserAccounts>
        <AdministratorPassword>
          <Value>p@ssw0rd</Value>
          <PlainText>true</PlainText>
        </AdministratorPassword>
      </UserAccounts>
      <OOBE>
        <HideEULAPage>true</HideEULAPage>
        <NetworkLocation>Work</NetworkLocation>
        <ProtectYourPC>3</ProtectYourPC>
      </OOBE>
      <Display>
        <ColorDepth>32</ColorDepth>
        <HorizontalResolution>1024</HorizontalResolution>
        <VerticalResolution>768</VerticalResolution>
      </Display>
      <TimeZone>W. Europe Standard Time</TimeZone>
    </component>
  </settings>
  <settings pass="generalize">
    <component name="Microsoft-Windows-ServerManager-SvrMgrNc" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <DoNotOpenServerManagerAtLogon>true</DoNotOpenServerManagerAtLogon>
    </component>
    <component name="Microsoft-Windows-OutOfBoxExperience" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <DoNotOpenInitialConfigurationTasksAtLogon>true</DoNotOpenInitialConfigurationTasksAtLogon>
    </component>
  </settings>
</unattend>

In short what this sysprep.xml does (from bottom to top):

  • Disables the Initial Configuration Tasks screen at logon
  • Disables the Server Manager screen at logon
  • Sets timezone to W. Europe Standard Time
  • Sets resolution to 1024x768x32
  • Sets Automatic Updates to not configured
  • Sets the Network connection to Work
  • Hides the EULA prompt
  • Sets the administrator password to: p@ssw0rd
  • Sets the Organization and Registered user to Henk
  • Sets User, UI, System and InputLocale to en-US
  • Disables the IE Enhanced Security Configuration
  • Skips auto-activation of Windows
  • Sets the product key to AAAAA-BBBBB-CCCCC-DDDDD-EEEEE
  • Disables Windows Live features
  • Generates a Random hostname

Ok, so now you have a sysprep.xml… what do you do with it?
In your Server 2008 (in this example) copy the sysprep.xml to c:\windows\system32\sysprep\sysprep.xml

Now execute: sysprep /generalize /oobe /shutdown /unattend:sysprep.xml
After this your system shuts down, and you can either image it, but in most cases it’s probably a VHD or VMDK file and you just copy it ;) . When you messed up your sysprep.xml and allready ran the sysprep command on your system you will have in most cases no choice but to reinstall the system, and resysprep it. For VHD scenario’s there a little trick, however :) . Read my previous blogpost about editing the unattend.xml file directly inside of the VHD.

Tagged as: No Comments
28Apr/094

Pretty Good Frontend Revisited for LTI

The last few days i've been messing around with an MDT 2008 environment in which the customer wanted to have some kind of wizard page when a computer was being deployed that was not already in the database. I remembered the Pretty Good Frontend by Johan Arwidmark which was an awesome discovery back when we were still using BDD2007. My customer however didn't have ZTI but LTI deployment going on, so I had to customize Johan's Pretty Good Frontend to my customer's needs. So why not share it with the community? :)

Many thanks go to Johan Arwidmark for inventing the PGF in the first place, and Michael Niehaus who helped me solve a scripting issue :)

Allright here goes:

Features
- Only appears if computer is not in the MDT Database already
- Allows for entering a computer name
- Allows for Selecting target OU (Selection list is from live Actice Directory data)
- Allows for role selection (Selection list is from live MDT database)
- Configured from rules in bootstrap.ini, no hardcoded values in the Frontend
- Started as a userexit (no scripts on the winpe image)
- Checkboxes to select which data to store in the database

8Apr/090

MDT 2010 Webcast

Michael Niehaus and Tim Mintner's walkthrough/webcast of MDT 2010 Beta 2 is now available online as Michael indicates on his blog here:

http://blogs.technet.com/mniehaus/archive/2009/04/01/mdt-2010-partner-webcast-recording-available.aspx

You have to register to download & they have both Live Meeting & WMV formats available

Register and download here:http://msevents.microsoft.com/CUI/InviteOnly.aspx?EventID=3A-78-05-A7-61-B7-4B-2B-08-41-98-B1-8C-3B-92-B4&Culture=en-US

Tagged as: No Comments
26Feb/090

Microsoft Deployment Toolkit 2010 beta 2 features

Yesterday I attended a MS Livemeeting in which Michael Niehaus and Tim Mintner showed all the new features MDT 2010 beta 2 will contain.
Here’s a summary of what I believe are the most interesting changes and new features:

Beta 1 features:

  • Windows 7 and Windows server 2008 R2 Support

Beta 2 features:

  • Deployment Workbench (UI) Architecture Enhancements
  • More flexible
    • Support for multiple deployment shares (both local and remote)
    • Multi-User support for the workbench (previously more than one active instance of the deployment workbench led to strange behaviors)
    • Easier and more flexible grouping
    • Drag and drop support, even from portable deployment point
    • Long running tasks can be cancelled (or run from a command line)
    • Each deployment point can have an associated database (as opposed to a single database for all deployment points in MDT 2008)
    • Each deployment point can have linked deployment points, for replication
    • Each deployment point can have multiple media definitions
    • Drivers can be targeted to install even if not detected
  • Based on PowerShell provider
    • Wizard Pages have "View Script" and "View Output" on summary (just like SCVMM2008)
  • Script Architecture Enhancements
    • Improved diagnostics and logging
    • Better error and recovery
      • Better network retry logic (no more: unable to contact deployment point errors!)
    • Improved readability of default scripts
  • Documentation Improvements
    • Simplified documentation
    • Cross linked content
    • Covers both the why's and how's’

As you can see, there’s going to be enough changes! Suffice to say I will test-drive Beta 2 once it’s up for download!

23Feb/090

Windows Vista Resource Kit book is available for free

In case you’ve missed all the blog entries about it, Microsoft Press has made available the full text of the Windows Vista Resource Kit book, downloadable as a PDF file.  See http://csna01.libredigital.com/?urws8un4p7 for the details.

Chapter 12 in this book is all about deploying with Microsoft Deployment Toolkit 2008. There are some nice examples on how to automate LTI deployments, as well as configuring ZTI deployments. In total there are 58 pages of MDT goodness in there :) .

There are plenty of familiar names in the acknowledgements section, including a few names (Michael Niehaus, Jerry Honeycutt, Tony Northup, Doug Steen, Dave Field) that have worked with the MDT team over the years on the MDT documentation.

10Jan/090

Beta: Microsoft Deployment Toolkit 2010

Deploy Windows 7 beta with Microsoft Deployment Toolkit 2010. Join the beat and download MDT 2010 now at http://connect.microsoft.com.

MDT 2010 is the next version of Microsoft Deployment Toolkit, a solution accelerator for operating system and application deployment. New features like flexible driver management, optimized transaction processing, and access to distribution shares from any location simplify deployment and make your job easier. Deploy faster and easier with MDT 2010. Join the beta now.

Tell us what you think! Join the beta and send us your honest feedback. We appreciate your input.

Microsoft Deployment Toolkit is the fourth generation deployment accelerator from Microsoft. It is the recommended process and toolset to automate desktop and server deployment. MDT benefits you by providing:
• Detailed guidance and job aids for every organized role involved with large-scale deployment projects.
• Unified tools and processes required for desktop and server deployment in a common deployment console and collection of guidance.
• Reduced deployment time, standardized desktop and server images, along with improved security and ongoing configuration management.
Tell your peers about MDT 2010! Please forward this mail to anyone who wants to learn more about Microsoft Deployment Toolkit.

6Jan/090

Identifying which MS Virtualization Platform your guest is running on

Today I was messing around with MDT (duh) and came to realize that when deploying to a MS virtualization platform I was gonna be in trouble when using the default make and model method that is build in MDT. (It all echoes Microsoft Corporation and Virtual Machine... so which VM Additions should I install?)
I found out that the BIOS date of the guests that are running on HyperV is different from guests that run on VPC or VS. But how to differentiate between Virtual Server and Virtual PC?! Hmm that was a though one.... After a evening of tweaking and messing around I found out that on a VPC guest there's a PnPEntity called "Sound Blaster 16", where a VS guest does not have this entity. There we go!

Therefore i wrote the following script, which will set the sPlatform variable to the according virtualization platform (VPC/VS/HyperV) and echo it back to the user. This of course is only to show it works. From a deployment point of view I would use this to install the right VM Additions on the guest.

[/vb]
'#***********************************************************************
'#* File:				Detect MS Virtual Platform.vbs
'#* Creation Date:		01*04*2009
'#* Author: 			Henk Hofs (Login Consultants)
'#* Purpose:			Detect on what Virtualization product guest is running.
'#* Usage:				This script will set the variable: sPlatform to HyperV, VPC or VS.
'#* 					It will also print the value of sPlatform to the console.
'#*
'#* Revisions:			0.1   HHO 	Initial Version
'#***********************************************************************
Dim sPlatform
Set objWMIService = GetObject("winmgmts:\\.\root\CIMV2")
Set colItemsMSVI = objWMIService.ExecQuery("SELECT * FROM Win32_Bios")
For Each objItem In colItemsMSVI
Select Case objItem.Name
Case "BIOS Date: 05/05/08 20:35:56  Ver: 08.00.02"
sPlatform = "HyperV"
Case "BIOS Date: 02/22/06 20:54:49  Ver: 08.00.02"
LDT_VPC()
If sPlatform = "" then
sPlatform = "VS"
End If
Case Else
MsgBox "Not VPC, VS or HyperV"
End Select
Next
Wscript.Echo sPlatform
Function LDT_VPC
Set colItemsVPC = objWMIService.ExecQuery("SELECT * FROM Win32_PnPEntity WHERE name=""Sound Blaster 16""")
For Each objItem In colItemsVPC
If objItem.Name <> "" then
sPlatform = "VPC"
End If
Next
End Function
1
Tagged as: No Comments
7Dec/080

MDT 2008: Updating deployment point using Powershell

Everybody who has been playing around with MDT faces this issue. For some changes you make you need to update your deployment point.
I got tired of clicking through the GUI to update my deployment point, so that's why I started hacking around in Powershell to automate this process :)

Here's the powershell script for updating the deployment point, it takes 2 parameters:
name of deployment point and the updatetype (Full or FilesOnly)

#'***********************************************************************
#'* File:                UpdateDeploymentPoint.ps1
#'* Creation Date:        2008/12/07
#'* Author:             Henk Hofs (Login Consultants)
#'* Purpose:            Updates MDT Deployment Point
#'* Usage:                ./UpdateDeploymentPoint.ps1 [Deployment Point Name] [UpdateType]
#'* Reference:      
#'*
#'* Revisions:              0.1   HHO     Initial Version
#'***********************************************************************
# Initialization
# Get command-line parameters for Deployment Point name and UpdateType
Param
(
 [string]$DeployName =$(throw "You must specify the name of the deployment point"),
 [string]$UpdateType = $(throw "You must specify the update type, choose between: Full and FilesOnly")
)

#Set Upd Variable (boolean) according to input from parameter
Switch ($UpdateType)
{
 "Full" {[Boolean]$Upd = 0}
 "FilesOnly" {[Boolean]$Upd = 1}   
}
#Create temp directory for log file if it does not exist
if ((Test-Path -Path C:\temp) -eq $false)
{
New-Item -ItemType directory c:\temp
}

#Load MDT Assembly
$MdtInstallDir = (gp "HKLM:\software\microsoft\deployment 4").Install_Dir
[Reflection.Assembly]::LoadFile( "$MdtInstallDir" + "Bin\Microsoft.BDD.ConfigManager.dll")
$manager = [Microsoft.BDD.ConfigManager.Manager]

#Load DeployManager class
$deployManager = $manager::DeployManager
#Load list of deployment points
$deployList = $deployManager.GetDataTable()   
# Loop through the list
foreach ($item in $deployList)
 {
 #Look for the name that was entered as a paramater
 if ($item["Name"] -eq $DeployName)
 {
 #Set $deployGUID variable and use it to update the deployment point
 $deployGUID = $item["guid"]
 Write-Host "Updating deployment point" $DeployName "with guid" $item["guid"] "using updatetype" $UpdateType
 Write-Host "Please be patient..."
 $deployPoint = $DeployManager[$deployGUID]
 $deployPoint.Generate("x86", "C:\temp\DeployUpdate.log", $Upd)
 }
 }

Well, after you updated your deployment point, you have to replace your image in WDS. So I got something for that as well... a nice oneliner in CMD ;)

wdsutil /replace-image /image:"Lite Touch Windows PE (x86)" /ImageType:Boot /Architecture:x86 /ReplacementImage /ImageFile:"D:\Distribution\Boot\LiteTouchPE_x86.wim"

You might want to replace "D:\Distribution\Boot\LiteTouchPE_x86.wim" with the path to you imagefile :)

-Henk

4Dec/080

MDT 2010

I just read this article, which announces the beta of MDT 2010 coming out soon :)

According to the article it will have:

  • Support for Windows 7 and Windows Server 2008 R2.

Well, that was to be expected. I already installed Windows 7 on a VPC, but the installation process looked the same as Vista/2008. So there's probably some extra features/roles/components you can select in the task sequences, but I don't think this will be too exciting ;)

  • Deployment Workbench and script architecture improvements.

I'm very curious about the script architecture improvements!! Will they have changed to Powershell instead of VBScript? I do hope so, because i'm still looking for a reason to start learning Powershell! ;)

  • Documentation improvement

Right, nothing to add to that :P

I signed up for the beta, and will get a download link as soon as it's available!
I will be writing an article about MDT 2010 as soon as I get to take it for a spin.