<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.technet.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US"><title type="html">Official technical blog for the Microsoft Dynamic Datacenter</title><subtitle type="html">Technical tips and information </subtitle><id>http://blogs.technet.com/b/ddc_dudes/atom.aspx</id><link rel="alternate" type="text/html" href="http://blogs.technet.com/b/ddc_dudes/" /><link rel="self" type="application/atom+xml" href="http://blogs.technet.com/b/ddc_dudes/atom.aspx" /><generator uri="http://telligent.com" version="5.6.50428.7875">Telligent Evolution Platform Developer Build (Build: 5.6.50428.7875)</generator><updated>2009-08-31T19:23:00Z</updated><entry><title>DPM 2010 Support in DDCTK-H</title><link rel="alternate" type="text/html" href="http://blogs.technet.com/b/ddc_dudes/archive/2010/07/01/dpm-2010-support-in-ddctk-h.aspx" /><id>http://blogs.technet.com/b/ddc_dudes/archive/2010/07/01/dpm-2010-support-in-ddctk-h.aspx</id><published>2010-07-01T16:33:22Z</published><updated>2010-07-01T16:33:22Z</updated><content type="html">&lt;p&gt;For those who wish to use DPM 2010 and supply end user backup/restore functionality to users, we just published a DPM 2010 WCF service on Code Gallery.&amp;#160; This first release works with the agent based backup in the VM just like the old version.&amp;#160; There are a few big improvements over the last DPM 2007 service.&lt;/p&gt;  &lt;p&gt;IIS Hosted WCF service – the DPM bug where you could not call DPM PowerShell from ASP.NET or WEB Server Hosted WCF services is fixe in DPM 2010&lt;/p&gt;  &lt;p&gt;Complete DPM 2010 PowerShell wrapper is included.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;a title="http://code.msdn.microsoft.com/ddc/Release/ProjectReleases.aspx?ReleaseId=4587" href="http://code.msdn.microsoft.com/ddc/Release/ProjectReleases.aspx?ReleaseId=4587"&gt;http://code.msdn.microsoft.com/ddc/Release/ProjectReleases.aspx?ReleaseId=4587&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;We will look to Implement ILR for agentless file recovery in a later update to this code. &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3341596" width="1" height="1"&gt;</content><author><name>DDC Dudes</name><uri>http://blogs.technet.com/DDC-Dudes/ProfileUrlRedirect.ashx</uri></author></entry><entry><title>Get free DDC Training Online</title><link rel="alternate" type="text/html" href="http://blogs.technet.com/b/ddc_dudes/archive/2010/03/18/get-free-ddc-training-online.aspx" /><id>http://blogs.technet.com/b/ddc_dudes/archive/2010/03/18/get-free-ddc-training-online.aspx</id><published>2010-03-19T03:50:12Z</published><updated>2010-03-19T03:50:12Z</updated><content type="html">&lt;p&gt;&lt;/p&gt;  &lt;p&gt;Edit – not long after I posted the original links, Microsoft Hosting University went live with DDC training - here is an update with a link to Hosting University content.&amp;#160; The Hosting University experience is great!&lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.hosting-university.com/ddc/video.html" href="http://www.hosting-university.com/ddc/video.html"&gt;http://www.hosting-university.com/ddc/video.html&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Quick start link&lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.hosting-university.com/ddc/?section=quickstart" href="http://www.hosting-university.com/ddc/?section=quickstart"&gt;http://www.hosting-university.com/ddc/?section=quickstart&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;We should have posted this earlier!&amp;#160; Did you know you can get free DDC training ?&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://ecn.channel9.msdn.com/o9/edge/7/2/2/7/1/DDCVBModule1_2MB_edge.wmv"&gt;&lt;b&gt;Module 1&lt;/b&gt;&lt;/a&gt;&lt;b&gt;: Overview of the Dynamic Data Center (48:41)&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;In this module you will learn about Microsoft’s vision for the Dynamic Data Center and get an introduction for how it works. You will learn about DDC management services for hosters, along with hardware and infrastructure requirements for setting up the DDC. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Module 2: Configuring a Dynamic Data Center Virtualization Infrastructure &lt;/b&gt;&lt;/p&gt;  &lt;p&gt;· &lt;a href="http://ecn.channel9.msdn.com/o9/edge/6/4/4/7/1/UPDATEDDDCVBMod2Lesson1_2MB_edge.wmv"&gt;Module2/Lesson1&lt;/a&gt; (18:07): Hyper-V in Windows Server 2008 R2 Overview&lt;/p&gt;  &lt;p&gt;· &lt;a href="http://ecn.channel9.msdn.com/o9/edge/5/4/4/7/1/UPDATEDDDCVBMod2Lesson2_2MB_edge.wmv"&gt;Module2/Lesson2&lt;/a&gt; (18:04): Networking with Hyper-V in Windows Server 2008 R2 Lessons&lt;/p&gt;  &lt;p&gt;· &lt;a href="http://ecn.channel9.msdn.com/o9/edge/4/4/4/7/1/UPDATEDDDCVBMod2Lesson3_2MB_edge.wmv"&gt;Module2/Lesson3&lt;/a&gt; (17:17): Hyper-V in Windows Server 2008 R2 Storage &lt;/p&gt;  &lt;p&gt;· &lt;a href="http://ecn.channel9.msdn.com/o9/edge/3/4/4/7/1/UPDATEDDDCVBMod2Lesson4_2MB_edge.wmv"&gt;Module2/Lesson4&lt;/a&gt; (39:16): Making Virtualized Workloads Highly Available &lt;/p&gt;  &lt;p&gt;· &lt;a href="http://ecn.channel9.msdn.com/o9/edge/1/4/4/7/1/UPDATEDDDCVBMod2Lesson5_2MB_edge.wmv"&gt;Module2/Lesson5&lt;/a&gt; (11:19): Hyper-V Security &lt;/p&gt;  &lt;p&gt;· &lt;a href="http://ecn.channel9.msdn.com/o9/edge/9/0/4/7/1/UPDATEDDDCVBMod2Lesson6_2MB_edge.wmv"&gt;Module2/Lesson6&lt;/a&gt; (15:43): Planning Hyper-V &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Module 3: Managing Dynamic Data Center Software: System Center Virtual Machine Manager 2008 R2 &lt;/b&gt;&lt;/p&gt;  &lt;p&gt;· &lt;a href="http://ecn.channel9.msdn.com/o9/edge/5/3/4/7/1/UPDATEDDDCVBMod3Lesson1_2MB_edge.wmv"&gt;Module3/Lesson1&lt;/a&gt;(10:38): System Center Virtual Machine Manager (SCVMM) 2008 R2 Overview &lt;/p&gt;  &lt;p&gt;· &lt;a href="http://ecn.channel9.msdn.com/o9/edge/4/3/4/7/1/UPDATEDDDCVBMod3Lesson2_2MB_edge.wmv"&gt;Module3/Lesson2&lt;/a&gt; (12:59): SCVMM 2008 R2 Architecture &lt;/p&gt;  &lt;p&gt;· &lt;a href="http://ecn.channel9.msdn.com/o9/edge/0/2/4/7/1/UPDATEDDDCVBMod3Lesson3_2MB_edge.wmv"&gt;Module3/Lesson3&lt;/a&gt; (9:40): Installing and Configuring SCVMM 2008 R2 &lt;/p&gt;  &lt;p&gt;· &lt;a href="http://ecn.channel9.msdn.com/o9/edge/1/1/4/7/1/UPDATEDDDCVBMod3Lesson4_2MB_edge.wmv"&gt;Module3/Lesson4&lt;/a&gt; (55:18): Managing and Maintaining SCVMM 2008 R2 &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Module 4: Managing Dynamic Data Center Software: System Center Operations Manager 2007 R2 &lt;/b&gt;&lt;/p&gt;  &lt;p&gt;· &lt;a href="http://ecn.channel9.msdn.com/o9/edge/0/1/4/7/1/UPDATEDDDCVBMod4Lesson1_2MB_edge.wmv"&gt;Module4/Lesson1&lt;/a&gt; (17:58): System Center Operations Manager (SCOM) 2007 R2 Overview &lt;/p&gt;  &lt;p&gt;· &lt;a href="http://ecn.channel9.msdn.com/o9/edge/8/0/4/7/1/UPDATEDDDCVBMod4Lesson2_2MB_edge.wmv"&gt;Module4/Lesson2&lt;/a&gt; (16:22): SCOM 2007 R2 Architecture &lt;/p&gt;  &lt;p&gt;· &lt;a href="http://ecn.channel9.msdn.com/o9/edge/4/4/4/7/1/UPDATEDDDCVBMod4Lesson3_2MB_edge.wmv"&gt;Module4/Lesson3&lt;/a&gt; (29:27): Installing and Configuring SCOM 2007 R2 &lt;/p&gt;  &lt;p&gt;· &lt;a href="http://ecn.channel9.msdn.com/o9/edge/4/0/4/7/1/UPDATEDDDCVBMod4Lesson4_2MB_edge.wmv"&gt;Module4/Lesson4&lt;/a&gt; (35:25): Understanding SCOM 2007 R2 Management Packs &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Module 5: Managing Dynamic Data Center Software: System Center Configuration Manager 2007 R2 &lt;/b&gt;&lt;/p&gt;  &lt;p&gt;· &lt;a href="http://ecn.channel9.msdn.com/o9/edge/3/0/4/7/1/UPDATEDDCVBMod5Lesson1_2MB_edge.wmv"&gt;Module5/Lesson1&lt;/a&gt; (12:25): System Center Configuration Manager (SCCM) 2007 R2 Overview &lt;/p&gt;  &lt;p&gt;· &lt;a href="http://ecn.channel9.msdn.com/o9/edge/1/0/4/7/1/UPDATEDDDCVBMod5Lesson2_2MB_edge.wmv"&gt;Module5/Lesson2&lt;/a&gt; (19:23): SCCM 2007 R2 Architecture &lt;/p&gt;  &lt;p&gt;· &lt;a href="http://ecn.channel9.msdn.com/o9/edge/6/4/4/7/1/UPDATEDDCVBMod5Lesson3_2MB_edge.wmv"&gt;Module5/Lesson3&lt;/a&gt; (40:47): Installing and Configuring SCCM 2007 R2 &lt;/p&gt;  &lt;p&gt;· &lt;a href="http://ecn.channel9.msdn.com/o9/edge/5/9/3/7/1/UPDATEDDDCVBMod5Lesson4_2MB_edge.wmv"&gt;Module5/Lesson4&lt;/a&gt; (5:49): Best Practices for Service Providers&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Module 6: Managing Dynamic Data Center Software: System Center Data Protection Manager 2007 SP1 &lt;/b&gt;&lt;/p&gt;  &lt;p&gt;· &lt;a href="http://ecn.channel9.msdn.com/o9/edge/4/9/3/7/1/UPDATEDDDCVBMod6Lesson1_2MB_edge.wmv"&gt;Module6/Lesson1&lt;/a&gt; (9:08): System Center Data Protection Manager (SCDPM) &lt;/p&gt;  &lt;p&gt;· &lt;a href="http://ecn.channel9.msdn.com/o9/edge/1/9/3/7/1/UPDATEDDDCVBMod6Lesson2_2MB_edge.wmv"&gt;Module6/Lesson2&lt;/a&gt; (11:17): Supporting SCDPM in Virtualized Environments &lt;/p&gt;  &lt;p&gt;· &lt;a href="http://ecn.channel9.msdn.com/o9/edge/0/9/3/7/1/UPDATEDDDCVBMod6Lesson3_2MB_edge.wmv"&gt;Module6/Lesson3&lt;/a&gt; (21:02): Installing and Configuring SCDPM &lt;/p&gt;  &lt;p&gt;· &lt;a href="http://ecn.channel9.msdn.com/o9/edge/7/8/3/7/1/UPDATEDDDCVBMOD6Lesson4_2MB_edge.wmv"&gt;Module6/Lesson4&lt;/a&gt; (8:31) : Monitoring and Reporting with SCDPM &lt;/p&gt;  &lt;p&gt;&lt;a href="http://ecn.channel9.msdn.com/o9/edge/9/4/4/7/1/DDCVBModule7_2MB_edge.wmv"&gt;&lt;b&gt;Module 7&lt;/b&gt;&lt;/a&gt;&lt;b&gt;: Operating System Provisioning in the Dynamic Data Center (46:34)&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;In this module, you will learn options Microsoft provides for Provisioning and deployment, including Windows Deployment Services (WDS), Windows Automated Installation Kit (WAIK), and Microsoft Deployment Toolkit (MDT) 2010. &lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3320014" width="1" height="1"&gt;</content><author><name>DDC Dudes</name><uri>http://blogs.technet.com/DDC-Dudes/ProfileUrlRedirect.ashx</uri></author></entry><entry><title>RDP connections to a Virtual Machine via the Hyper-V Host</title><link rel="alternate" type="text/html" href="http://blogs.technet.com/b/ddc_dudes/archive/2010/02/03/rdp-connections-a-virtual-machine-via-the-hyper-v-host.aspx" /><id>http://blogs.technet.com/b/ddc_dudes/archive/2010/02/03/rdp-connections-a-virtual-machine-via-the-hyper-v-host.aspx</id><published>2010-02-03T16:47:51Z</published><updated>2010-02-03T16:47:51Z</updated><content type="html">&lt;p&gt;One question we frequently have from hosters is how to be able to remotely control a virtual machine before the operating system is running(ie BIOS level, boot config etc).&amp;nbsp; SCVMM uses a custom Active-X control that is a wrapper around the standard RDP control that ships with Windows.&amp;nbsp; &lt;/p&gt; &lt;p&gt;A sample active-x control has been published on the DDC code gallery site &lt;a title="http://code.msdn.microsoft.com/ddc/Release/ProjectReleases.aspx?ReleaseId=3833" href="http://code.msdn.microsoft.com/ddc/Release/ProjectReleases.aspx?ReleaseId=3833"&gt;http://code.msdn.microsoft.com/ddc/Release/ProjectReleases.aspx?ReleaseId=3833&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Hyper-V allows RDP control of a VM through port 2179 by default and with some additional settings, you can connect to and control the VM through the Hyper-V host.&lt;/p&gt; &lt;p&gt;The active X wrapper published on codegallery is not actually needed if using the RDP control that ships with Windows 7 and Windows Server 2008 R2.&amp;nbsp; &lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3310391" width="1" height="1"&gt;</content><author><name>DDC Dudes</name><uri>http://blogs.technet.com/DDC-Dudes/ProfileUrlRedirect.ashx</uri></author></entry><entry><title>Using SNMP from SCOM</title><link rel="alternate" type="text/html" href="http://blogs.technet.com/b/ddc_dudes/archive/2010/02/03/using-snmp-from-scom.aspx" /><id>http://blogs.technet.com/b/ddc_dudes/archive/2010/02/03/using-snmp-from-scom.aspx</id><published>2010-02-03T16:23:00Z</published><updated>2010-02-03T16:23:00Z</updated><content type="html">&lt;P&gt;This entry comes from James Henigan with Microsoft in the UK and &lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-ansi-language: EN-GB; mso-fareast-language: EN-US; mso-bidi-language: AR-SA" lang=EN-GB&gt;&lt;A href="http://www.fasthosts.co.uk/"&gt;&lt;FONT color=#0000ff&gt;www.fasthosts.co.uk&lt;/FONT&gt;&lt;/A&gt;&lt;/SPAN&gt; one of the premiere hosting providers in the UK. The goal was to use SCOM to collect information by having SCOM leverage (Simple Network Management Protocol) SNMP installed on a guest VM that is not domain joined. The following PowerShell scripts will allow you to connect SCOM up for monitoring. 
&lt;H4&gt;Simple Network Management Protocol Overview&lt;/H4&gt;
&lt;P&gt;&lt;A href="http://technet.microsoft.com/en-us/library/cc731328.aspx" mce_href="http://technet.microsoft.com/en-us/library/cc731328.aspx"&gt;http://technet.microsoft.com/en-us/library/cc731328.aspx&lt;/A&gt; 
&lt;H4&gt;Configuring SNMP on Windows Server 2003&lt;/H4&gt;
&lt;P&gt;&lt;A href="http://support.microsoft.com/kb/324263" mce_href="http://support.microsoft.com/kb/324263"&gt;http://support.microsoft.com/kb/324263&lt;/A&gt; 
&lt;P&gt;When discovery Network Devices via SNMP the default powershell script does not work in SCOM 2007 R2. 
&lt;P&gt;ERRORS: 
&lt;P&gt;&lt;B&gt;1) Error when running default script:&lt;/B&gt; 
&lt;P&gt;Get-ManagementServer : A parameter cannot be found that matches parameter name 'Root'. 
&lt;P&gt;At C:\SCRIPTS\Discovery01-BAK.ps1:10 char:48 
&lt;P&gt;+ $managementServer = Get-ManagementServer -Root: &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;nbsp; $true 
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; + CategoryInfo&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : InvalidArgument: (:) [Get-ManagementServer], ParameterBindingException 
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; + FullyQualifiedErrorId : 
&lt;P&gt;NamedParameterNotFound,Microsoft.EnterpriseManagement.OperationsManager.ClientShell.GetManagementServerCmdlet 
&lt;P&gt;Start-Discovery : Cannot validate argument on parameter 'ManagementServer'. The argument is null or empty. Supply an argument that is not null or emp 
&lt;P&gt;ty and then try the command again. 
&lt;P&gt;At C:\SCRIPTS\Discovery01-BAK.ps1:12 char:56 
&lt;P&gt;+ $discovery_results = start-discovery -ManagementServer: &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;nbsp; $managementServer -DeviceDiscoveryConfiguration: $dc 
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; + CategoryInfo&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : InvalidData: (:) [Start-Discovery], ParameterBindingValidationException 
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; + FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.EnterpriseManagement.OperationsManager.ClientShell.StartDiscoveryCmdlet 
&lt;P&gt;Add-RemotelyManagedDevice : Cannot bind argument to parameter 'ProxyAgent' because it is null. 
&lt;P&gt;At C:\SCRIPTS\Discovery01-BAK.ps1:18 char:38 
&lt;P&gt;+ add-remotelymanageddevice -proxyagent &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;nbsp; $agent -device $discovery_results.custommonitoringobjects 
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; + CategoryInfo&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : InvalidData: (:) [Add-RemotelyManagedDevice], ParameterBindingValidationException 
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed, Microsoft.EnterpriseManagement.OperationsManager.ClientShell.AddRemotelyManagedDeviceCmdlet 
&lt;P&gt;&lt;B&gt;2) Error when changing line: "$managementServer = Get-ManagementServer | where-object {$_.Name -eq "&amp;lt;&amp;lt;root server name&amp;gt;&amp;gt;"}"&lt;/B&gt; 
&lt;P&gt;Add-RemotelyManagedDevice : Cannot bind argument to parameter 'ProxyAgent' because it is null. 
&lt;P&gt;At C:\SCRIPTS\Discovery01.ps1:18 char:38 
&lt;P&gt;+ add-remotelymanageddevice -proxyagent &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;nbsp; $agent -device $discovery_results.custommonitoringobjects 
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; + CategoryInfo&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : InvalidData: (:) [Add-RemotelyManagedDevice], ParameterBindingValidationException 
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed, Microsoft.EnterpriseManagement.OperationsManager.ClientShell.AddRemotelyManagedDeviceCmdlet 
&lt;P&gt;&lt;B&gt;3) Script that worked - last 2 lines modified (and line as per no 2)&lt;/B&gt; 
&lt;P&gt;--------START----------- 
&lt;P&gt;$networkdeviceclass = get-monitoringclass -name 'System.NetworkDevice' 
&lt;P&gt;$dc = New-DeviceDiscoveryConfiguration -monitoringclass $networkdeviceclass -fromipaddress '&amp;lt;&amp;lt;start ip&amp;gt;&amp;gt;' -toipaddress '&amp;lt;&amp;lt;end ip&amp;gt;&amp;gt;' 
&lt;P&gt;$encoding = new-object System.Text.UnicodeEncoding 
&lt;P&gt;$encodedCommunityString = $encoding.GetBytes("fhvpsuk") 
&lt;P&gt;$dc.ReadOnlyCommunity = [System.Convert]::ToBase64String($encodedCommunityString) 
&lt;P&gt;$managementServer = Get-ManagementServer | where-object {$_.Name -eq "&amp;lt;&amp;lt;root server name&amp;gt;&amp;gt;"} 
&lt;P&gt;$discovery_results = start-discovery -ManagementServer: $managementServer -DeviceDiscoveryConfiguration: $dc 
&lt;P&gt;$discovery_results | select-object -expand custommonitoringobjects 
&lt;P&gt;$agent = get-rootmanagementserver 
&lt;P&gt;$agent.insertremotelymanageddevices($discovery_results.custommonitoringobjects)&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3310388" width="1" height="1"&gt;</content><author><name>DDC Dudes</name><uri>http://blogs.technet.com/DDC-Dudes/ProfileUrlRedirect.ashx</uri></author></entry><entry><title>Provisioning/Deployment technologies for a Dynamic Datacenter</title><link rel="alternate" type="text/html" href="http://blogs.technet.com/b/ddc_dudes/archive/2009/10/27/provisioning-deployment-technologies-for-a-dynamic-datacenter.aspx" /><id>http://blogs.technet.com/b/ddc_dudes/archive/2009/10/27/provisioning-deployment-technologies-for-a-dynamic-datacenter.aspx</id><published>2009-10-28T01:13:13Z</published><updated>2009-10-28T01:13:13Z</updated><content type="html">&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:6745927d-ce99-4bfc-af48-24d4f20c41c0" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/WDS" rel="tag"&gt;WDS&lt;/a&gt;,&lt;a href="http://technorati.com/tags/SCVMM" rel="tag"&gt;SCVMM&lt;/a&gt;,&lt;a href="http://technorati.com/tags/WAIK" rel="tag"&gt;WAIK&lt;/a&gt;,&lt;a href="http://technorati.com/tags/WebPI" rel="tag"&gt;WebPI&lt;/a&gt;,&lt;a href="http://technorati.com/tags/MDT+2010" rel="tag"&gt;MDT 2010&lt;/a&gt;,&lt;a href="http://technorati.com/tags/SCCM" rel="tag"&gt;SCCM&lt;/a&gt;&lt;/div&gt; &lt;p&gt;When it comes to provisioning either servers or applications in a Dynamic Datacenter, there are many options to choose from.&amp;nbsp; Microsoft alone has the Microsoft Automated Installation Kit(WAIK), Windows Deployment Services(WDS),&amp;nbsp; Microsoft Windows Server Update Services, System Center Configuration Manager, System Center Virtual Machine Manager, Microsoft Deployment Tool Kit 2010 , the Web Platform Installer and I am sure more technologies that I cannot list off the top of my head.&amp;nbsp; With so many options to choose from, it can be hard to determine what technology to choose when.&amp;nbsp; This will try to describe some of the features of the different products and technologies to help you choose what deployment technology will work best for you.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Windows Automated Install Kit&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;The WAIK is one of the baseline toolkits for building Windows images.&amp;nbsp; One key ability in the WAIK is the ability to extract an image allow service packs and pates to be added to that image then repackage the files into an install image.&amp;nbsp; This is an important tool for any organization deploying a lot of servers.&amp;nbsp; Also built into the the WAIK, is the ability to build Unattend files that automate portions of the install.&amp;nbsp; The unattend file is now XML based for Windows Vista and Server 2008 onward.&amp;nbsp; More information can be found at the following link.&lt;/p&gt; &lt;table border="1" cellspacing="0" cellpadding="2" width="540"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="173"&gt;WAIK&lt;/td&gt; &lt;td valign="top" width="365"&gt;Windows Automated Installation Kit &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="173"&gt;Description&lt;/td&gt; &lt;td valign="top" width="365"&gt;The Windows® Automated Installation Kit (Windows AIK) is a set of tools and documentation that support the configuration and deployment of Windows® operating systems. By using Windows AIK, you can automate Windows installations, capture Windows images with ImageX, configure and modify images using Deployment Imaging Servicing and Management (DISM), create Windows PE images, and migrate user profiles and data with the User State Migration Tool (USMT). Windows AIK also includes the Volume Activation Management Tool (VAMT), which enables IT professionals to automate and centrally manage the volume activation process using a Multiple Activation Key (MAK).&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="173"&gt;Price&lt;/td&gt; &lt;td valign="top" width="365"&gt;Free&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="173"&gt;Download Link&lt;/td&gt; &lt;td valign="top" width="365"&gt;&lt;a title="http://www.microsoft.com/downloads/details.aspx?familyid=696DD665-9F76-4177-A811-39C26D3B3B34&amp;amp;displaylang=en" href="http://www.microsoft.com/downloads/details.aspx?familyid=696DD665-9F76-4177-A811-39C26D3B3B34&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?familyid=696DD665-9F76-4177-A811-39C26D3B3B34&amp;amp;displaylang=en&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="173"&gt;Last Major Release&lt;/td&gt; &lt;td valign="top" width="365"&gt;August 2009&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;The AIK is a great tool for customizing Windows images in a highly customized environment.&amp;nbsp; The AIK supports configuring and deploying the following operating systems:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Windows® 7  &lt;li&gt;Windows Server® 2008 R2  &lt;li&gt;Windows Vista® Service Pack 1 (SP1)  &lt;li&gt;Windows Server® 2008 &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&amp;nbsp;&lt;strong&gt;Windows Deployment Services &lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Windows deployment services is a great tool for bare metal provisioning.&amp;nbsp; With WDS, a machine uses a PXE boot to boot off the WDS server and download a minimal OS in order to deploy the full Windows operating system. &lt;/p&gt; &lt;p&gt;One often overlooked new feature is that WDS can also be used to provision a physical server to boot to VHD.&amp;nbsp; When deploying with boot to VHD, the deployment of the server is typically much faster because the files do not have to be extracted and placed on the file system.&amp;nbsp; How fast you might ask?&amp;nbsp; How about going from a physical server with no OS to logged in in under 10 min.&amp;nbsp; The ability to import a VHD is not exposed in the UI so you have to use the WDS command line to do this.&amp;nbsp; Below is a sample command line that would take a sysprepped image named dcprep.vhd and add it to the VHDImageGroup on the WDS server named myWDSServer.&lt;/p&gt; &lt;table border="1" cellspacing="0" cellpadding="2" width="600"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="600"&gt;WDSUTIL /Verbose /Progress /Add-Image /ImageFile:C:\images\dcprep.vhd /Server:myWDSServer /ImageType:Install /ImageGroup:VHDImageGroup&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;Another nice feature of WDS is the ability to multicast deployment meaning you can deploy to say 10 servers at the same time by broadcasting the deployment image to all machines at the same time.&amp;nbsp; Deployment can also be scheduled to take place at a certain time so your staged machines will begin the deployment process during off peak network usage.&lt;/p&gt; &lt;table border="1" cellspacing="0" cellpadding="2" width="540"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="173"&gt;WDS&lt;/td&gt; &lt;td valign="top" width="365"&gt;Windows Deployment Services&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="173"&gt;Description&lt;/td&gt; &lt;td valign="top" width="365"&gt;WDS enables you to remotely deploy Windows operating systems.&amp;nbsp; Formerly known as RIS.&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="173"&gt;Price&lt;/td&gt; &lt;td valign="top" width="365"&gt;Part of Windows Server&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="173"&gt;Download Link&lt;/td&gt; &lt;td valign="top" width="365"&gt;Part of Windows Server OS.&amp;nbsp; For more information see &lt;a title="http://technet.microsoft.com/en-us/library/cc771670(WS.10).aspx" href="http://technet.microsoft.com/en-us/library/cc771670(WS.10).aspx"&gt;http://technet.microsoft.com/en-us/library/cc771670(WS.10).aspx&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="173"&gt;Last Major Release&lt;/td&gt; &lt;td valign="top" width="365"&gt;Windows Server 2008 R2&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;System Center Configuration Manager(SCCM)&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Microsoft System Center Configuration Manager 2007 Operating System Deployment is a highly flexible, automated solution that allows IT administrators to fully deploy and configure servers and desktops from any previous state, including bare-metal deployments.&amp;nbsp; It would be hard to do justice to for SCCM in a short space.&amp;nbsp; I am including links to more information on the features built into SCCM :&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.microsoft.com/systemcenter/configurationmanager/en/us/asset-intelligence.aspx"&gt;Asset Intelligence&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.microsoft.com/systemcenter/configurationmanager/en/us/software-update-management.aspx"&gt;Software Update Management&lt;/a&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/systemcenter/configurationmanager/en/us/desired-configuration-management.aspx"&gt;Desired Configuration Management&lt;/a&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/systemcenter/configurationmanager/en/us/software-distribution.aspx"&gt;Software Distribution&lt;/a&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/systemcenter/configurationmanager/en/us/operating-system-deployment.aspx"&gt;Operating System Deployment&lt;/a&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt; &lt;table border="1" cellspacing="0" cellpadding="2" width="540"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="173"&gt;SCCM&lt;/td&gt; &lt;td valign="top" width="351"&gt;System Center Configuration Manager&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="173"&gt;Description&lt;/td&gt; &lt;td valign="top" width="351"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="173"&gt;Price&lt;/td&gt; &lt;td valign="top" width="351"&gt;Licensed through an EA or SPLA licensing&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="173"&gt;Download Link&lt;/td&gt; &lt;td valign="top" width="351"&gt;&lt;a title="http://www.microsoft.com/systemcenter/configurationmanager/en/us/trial-software.aspx" href="http://www.microsoft.com/systemcenter/configurationmanager/en/us/trial-software.aspx"&gt;http://www.microsoft.com/systemcenter/configurationmanager/en/us/trial-software.aspx&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="173"&gt;Last Major Release&lt;/td&gt; &lt;td valign="top" width="351"&gt;System Center Configuration Manager R2 &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;System Center Virtual Machine Manager&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;If you have not used SCVMM yet and you are managing a Hyper-V or VMWare environment, this is really worth taking a look at.&amp;nbsp; SCVMM rocks!&amp;nbsp; A few of the key features are the ability to build machine templates based on virtual hardware and software templates.&amp;nbsp; It make deploying virtual machines easy.&amp;nbsp; New VM’s will be built based on the templates you choose.&lt;/p&gt; &lt;p&gt;Smart placement is another key feature of SCVMM.&amp;nbsp; SCVMM will place a new VM on the most appropriate server for the expected workload.&amp;nbsp; VMM also integrates with SCOM for better intelligence in placement.&lt;/p&gt; &lt;p&gt;SCVMM also has some nice reporting built in that show you the resources being used in SCVMM and the servers it is managing.&lt;/p&gt; &lt;p&gt;Other key features include:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Virtual to Virtual machine conversion (V2V)  &lt;li&gt;Physical to Virtual Machine conversion(P2V)&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;You can find more information on SCVMM here: &lt;a title="http://www.microsoft.com/systemcenter/virtualmachinemanager/en/us/default.aspx" href="http://www.microsoft.com/systemcenter/virtualmachinemanager/en/us/default.aspx"&gt;http://www.microsoft.com/systemcenter/virtualmachinemanager/en/us/default.aspx&lt;/a&gt;&lt;/p&gt; &lt;p&gt; &lt;table border="1" cellspacing="0" cellpadding="2" width="540"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="173"&gt;SCVMM&lt;/td&gt; &lt;td valign="top" width="354"&gt;System Center Virtual Machine Manager&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="173"&gt;Description&lt;/td&gt; &lt;td valign="top" width="354"&gt;Microsoft System Center Virtual Machine Manager provides a comprehensive, multi-virtualization management solution for the virtualized data center that enables increased physical server utilization, Performance and Resource Optimization (PRO),&amp;nbsp; and centralized management of both physical and virtual machine infrastructure.&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="173"&gt;Price&lt;/td&gt; &lt;td valign="top" width="354"&gt;Licensed through an EA or SPLA licensing&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="173"&gt;Download Link&lt;/td&gt; &lt;td valign="top" width="354"&gt;&lt;a title="http://www.microsoft.com/systemcenter/virtualmachinemanager/en/us/trial-software.aspx" href="http://www.microsoft.com/systemcenter/virtualmachinemanager/en/us/trial-software.aspx"&gt;http://www.microsoft.com/systemcenter/virtualmachinemanager/en/us/trial-software.aspx&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="173"&gt;Last Major Release&lt;/td&gt; &lt;td valign="top" width="354"&gt;System Center Virtual Machine Manager 2008 R2&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Microsoft Deployment Toolkit 2010&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;MDT places a level of automation as well as net new functionality on top of the WAIK.&amp;nbsp; One of the difficulties with editing unattend files is it is easy to make a mistake.&amp;nbsp; MDT goes a long ways in making automated custom deployment of servers easier to set up for system administrators.&amp;nbsp; MDT integrates with both WDS and SCCM as well.&amp;nbsp; MDT can be used to create custom deployment media as well as build applications into your base images so that they are deployed with the base OS install.&amp;nbsp; If for example, you wanted to install new roles or custom applications with your base OS, MDT can do this pretty easily as part of the OS install process.&lt;/p&gt; &lt;p&gt;More information on MDT is available at the below link.&lt;/p&gt; &lt;p&gt;&lt;a title="http://technet.microsoft.com/en-us/solutionaccelerators/dd407791.aspx" href="http://technet.microsoft.com/en-us/solutionaccelerators/dd407791.aspx"&gt;http://technet.microsoft.com/en-us/solutionaccelerators/dd407791.aspx&lt;/a&gt;&lt;/p&gt; &lt;p&gt; &lt;table border="1" cellspacing="0" cellpadding="2" width="540"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="173"&gt;MDT 2010&lt;/td&gt; &lt;td valign="top" width="356"&gt;Microsoft Deployment Toolkit&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="173"&gt;Description&lt;/td&gt; &lt;td valign="top" width="356"&gt;Microsoft Deployment Toolkit 2010 (MDT 2010) provides a common console with the comprehensive tools and guidance needed to efficiently manage deployment of Windows 7 and Windows Server 2008 R2. Microsoft Deployment Toolkit 2010 is the recommended process and toolset to automate desktop and server deployment. Microsoft Deployment Toolkit 2010 provides detailed guidance and job aids for every organizational role involved with large-scale deployment projects.&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="173"&gt;Price&lt;/td&gt; &lt;td valign="top" width="356"&gt;Free&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="173"&gt;Download Link&lt;/td&gt; &lt;td valign="top" width="356"&gt;&lt;a title="Microsoft Deployment Toolkit 2010 x64 Version" href="http://go.microsoft.com/fwlink/?LinkId=163308"&gt;Microsoft Deployment Toolkit 2010 x64 Version&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="173"&gt;Last Major Release&lt;/td&gt; &lt;td valign="top" width="356"&gt;MDT 2010&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Web Platform Installer&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;The web platform install is an underappreciated piece of software built by the IIS Product Team.&amp;nbsp; It is especially useful for hosting providers as it can be put into a base image and the customer who has a virtual dedicated server can us it to install common Web platform OS components as well as open source applications such as .NET Nuke and more.&amp;nbsp; I have included a screen capture of the app so you can see some of the functionality it has.&amp;nbsp; It also updates on the fly as the IIS team adds new applications. The installer itself is tiny at under 2 MB in size.&amp;nbsp; Below are some screen captures so you can see a small part of what is offered.&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/ddc_dudes/WindowsLiveWriter/ProvisioningoptionswiththeDDC_EF82/image_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.technet.com/blogfiles/ddc_dudes/WindowsLiveWriter/ProvisioningoptionswiththeDDC_EF82/image_thumb.png" width="526" height="467"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/ddc_dudes/WindowsLiveWriter/ProvisioningoptionswiththeDDC_EF82/image_4.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.technet.com/blogfiles/ddc_dudes/WindowsLiveWriter/ProvisioningoptionswiththeDDC_EF82/image_thumb_1.png" width="540" height="484"&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt; &lt;table border="1" cellspacing="0" cellpadding="2" width="540"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="173"&gt;WebPI&lt;/td&gt; &lt;td valign="top" width="360"&gt;Web Platform Installer&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="173"&gt;Description&lt;/td&gt; &lt;td valign="top" width="360"&gt;The Microsoft Web Platform Installer 2.0 (Web PI) is a free tool that makes getting the latest components of the Microsoft Web Platform, including Internet Information Services (IIS), SQL Server Express, .NET Framework and Visual Web Developer easy. The Web PI also makes it easy to install and run the most popular free web applications for blogging, content management and more with the built-in &lt;a href="http://www.microsoft.com/gallery/"&gt;Windows Web Application Gallery&lt;/a&gt;.&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="173"&gt;Price&lt;/td&gt; &lt;td valign="top" width="360"&gt;Free&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="173"&gt;Download Link&lt;/td&gt; &lt;td valign="top" width="360"&gt;&lt;a title="http://go.microsoft.com/fwlink/?LinkId=145505" href="http://go.microsoft.com/fwlink/?LinkId=145505"&gt;http://go.microsoft.com/fwlink/?LinkId=145505&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="173"&gt;Last Major Release&lt;/td&gt; &lt;td valign="top" width="360"&gt;Web PI 2.0&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3289693" width="1" height="1"&gt;</content><author><name>DDC Dudes</name><uri>http://blogs.technet.com/DDC-Dudes/ProfileUrlRedirect.ashx</uri></author></entry><entry><title>Rapid provisioning with SCVMM 2008 R2</title><link rel="alternate" type="text/html" href="http://blogs.technet.com/b/ddc_dudes/archive/2009/09/08/rapid-provisioning-with-scvmm-2008-r2.aspx" /><id>http://blogs.technet.com/b/ddc_dudes/archive/2009/09/08/rapid-provisioning-with-scvmm-2008-r2.aspx</id><published>2009-09-09T04:56:00Z</published><updated>2009-09-09T04:56:00Z</updated><content type="html">&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:8bf3a7af-dfc1-4a01-a530-1ff1b8ebe1db" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Rapid+Provisioning" rel="tag"&gt;Rapid Provisioning&lt;/a&gt;,&lt;a href="http://technorati.com/tags/SCVMM" rel="tag"&gt;SCVMM&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Hyper-V" rel="tag"&gt;Hyper-V&lt;/a&gt;,&lt;a href="http://technorati.com/tags/VHD" rel="tag"&gt;VHD&lt;/a&gt;&lt;/div&gt; &lt;p&gt;A common question we get from hosting providers is around rapid provisioning of virtual machines in Hyper-V.&amp;nbsp; In the hosting world, when a customer purchases a new VM, the hosting provider wants to make that machine available to the customer as rapidly as possible.&amp;nbsp;&amp;nbsp; We did a little collaboration on our team and came up with the following approach.&amp;nbsp; While there are different approaches to solving this this, here is one that is pretty slick.&lt;/p&gt; &lt;h4&gt;A little Background on SCVMM and Windows Server 2008&lt;/h4&gt; &lt;p&gt;One of the really cool things that came out in SCVMM 2008 R2 was the ability to take advantage of LUN cloning that some SAN vendors support for rapid provisioning.&amp;nbsp; With LUN cloning, the SAN does the heavy lifting of copying an image to a new LUN then SCVMM 2008 R2 could attach to that VHD when provisioning a new machine, thus avoiding the network file copy.&amp;nbsp; &lt;/p&gt; &lt;p&gt;Windows Server 2008 R2 introduced another really cool feature known as Clustered Shared Volumes (CSV’s) where cluster nodes can share storage.&amp;nbsp; You could place multiple VM’s on a CSV and run one VM from one node of the cluster and another VM from a different node of the cluster using that shared network storage.&amp;nbsp; Now the heartbreaker – LUN cloning and CSV’s don’t really work together.&amp;nbsp; When using LUN cloning, you are still stuck in a one VM per LUN model as was the case with Windows Server Hyper-V R1.&lt;/p&gt; &lt;p&gt;Before you read any further, a word of caution – before provisioning with this approach, take the time to think through the management implications.&amp;nbsp; We have listed some &lt;strong&gt;Additional Considerations and Questions&lt;/strong&gt; later in this posting.&amp;nbsp; Don’t go crazy here.&amp;nbsp; Take the time to think it through to see if it meets your needs as a business as well as SLA’s and customer expectations.&lt;/p&gt; &lt;h4&gt;The solution &lt;/h4&gt; &lt;p&gt;Doing some research I saw that Michael Michael had published a PowerShell Module that could be added to SCVMM to provision a VM using differencing disks.&amp;nbsp; &lt;a title="http://blogs.technet.com/m2/archive/2009/05/07/rapid-provisioning-in-vmm-2008-r2.aspx" href="http://blogs.technet.com/m2/archive/2009/05/07/rapid-provisioning-in-vmm-2008-r2.aspx" mce_href="http://blogs.technet.com/m2/archive/2009/05/07/rapid-provisioning-in-vmm-2008-r2.aspx"&gt;http://blogs.technet.com/m2/archive/2009/05/07/rapid-provisioning-in-vmm-2008-r2.aspx&lt;/a&gt;&lt;/p&gt; &lt;p&gt;The thought came up – what if the base sysprepped image was sitting on the CSV?&amp;nbsp; Could you provision a new highly available VM on the same or even a different CSV using a differencing disk?&amp;nbsp; If you could, that meant provisioning times could be cut to seconds instead of minutes.&lt;/p&gt; &lt;p&gt;I made some minor modifications of the script MM had produced – I will list the final version at the end of this blog.&amp;nbsp; I also built a small wrapper around it to make it easy to test and demo.&lt;/p&gt; &lt;p&gt;So here is the step by step:&lt;/p&gt; &lt;p&gt;1) Create a sysprepped image of the base OS you wish to deploy.&amp;nbsp; In my case I used an eval version of Windows Server 2008 R2 Datacenter.&lt;/p&gt; &lt;p&gt;2) Copy that image onto your CSV so that it can be referenced when provisioning a new VM based on the image.&amp;nbsp; In this case I placed it on Volume 2.&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/ddc_dudes/WindowsLiveWriter/RapidprovisioningwithSCVMM2008R2_10A47/image_2.png" mce_href="http://blogs.technet.com/blogfiles/ddc_dudes/WindowsLiveWriter/RapidprovisioningwithSCVMM2008R2_10A47/image_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.technet.com/blogfiles/ddc_dudes/WindowsLiveWriter/RapidprovisioningwithSCVMM2008R2_10A47/image_thumb.png" width="524" height="312" mce_src="http://blogs.technet.com/blogfiles/ddc_dudes/WindowsLiveWriter/RapidprovisioningwithSCVMM2008R2_10A47/image_thumb.png"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p mce_keep="true"&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;3)&amp;nbsp; Next in SCVMM 2008 R2, build a new Template that has the hardware settings that you want your new VM’s to be based on.&amp;nbsp; In the template you can add product key, admin password, networking configuration and more.&amp;nbsp; You can even point to an answer file to be used in the mini-setup.&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/ddc_dudes/WindowsLiveWriter/RapidprovisioningwithSCVMM2008R2_10A47/image5.png" mce_href="http://blogs.technet.com/blogfiles/ddc_dudes/WindowsLiveWriter/RapidprovisioningwithSCVMM2008R2_10A47/image_4.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.technet.com/blogfiles/ddc_dudes/WindowsLiveWriter/RapidprovisioningwithSCVMM2008R2_10A47/image5_thumb.png" width="540" height="279" mce_src="http://blogs.technet.com/blogfiles/ddc_dudes/WindowsLiveWriter/RapidprovisioningwithSCVMM2008R2_10A47/image_thumb_1.png"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;4)&amp;nbsp; You will need to install the NewDiskDiffVMModule into VMM.&amp;nbsp; This is pretty easy to do.&amp;nbsp; Copy the psm1 file on the file system of the SCVMM server and run the following from a SCVMM PowerShell prompt.&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/ddc_dudes/WindowsLiveWriter/RapidprovisioningwithSCVMM2008R2_10A47/image13.png" mce_href="http://blogs.technet.com/blogfiles/ddc_dudes/WindowsLiveWriter/RapidprovisioningwithSCVMM2008R2_10A47/image_6.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.technet.com/blogfiles/ddc_dudes/WindowsLiveWriter/RapidprovisioningwithSCVMM2008R2_10A47/image13_thumb.png" width="568" height="119" mce_src="http://blogs.technet.com/blogfiles/ddc_dudes/WindowsLiveWriter/RapidprovisioningwithSCVMM2008R2_10A47/image_thumb_2.png"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;5)&amp;nbsp; Optional - I created a CSV rapid provision script that made this a little bit easier.&amp;nbsp; Let me go over the call to the New-DiffVM:&lt;/p&gt; &lt;table border="1" cellspacing="0" cellpadding="2" width="600"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="600"&gt; &lt;p&gt;param ([String]$VMName)  &lt;p&gt;New-DiffVM -ParentVHDPath "C:\ClusterStorage\Volume2\DCPrep.vhd" -NewChildVHDPath "C:\ClusterStorage\Volume1\$VMName.vhd" -HostComputerName "HvHost2.HyperData.Com" -VirtualMachineName $VMName&amp;nbsp; -TemplateName "DCBaseTemplate" -VirtualMachineServerName "VMMR2RTM.HyperData.Com"&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;-ParentVHDPath – this is the path to the parent VHD – in my case on Volume 2 and named DCPrep.vhd  &lt;p&gt;-NewChildVHDPath – this is the path and name of the new VHD that will be the child of the previous entry.  &lt;p&gt;-HostComputerName – where do you want SCVMM to provision this VM.&amp;nbsp; Yes I know - the next trick will be to use smart placement.  &lt;p&gt;-VirtualMachineName – the new name of the VM as it appears in Hyper-V and SCVMM.  &lt;p&gt;-TemplateName – the name of the template that we created in step #3.  &lt;p&gt;-VirtualMachineServerName – finally the name of the SCVMM server we want to do this provisioning on.  &lt;h4&gt;Performance&lt;/h4&gt; &lt;p&gt;This is the part you have been waiting for right?&amp;nbsp; Well lets take a look.&lt;/p&gt; &lt;p&gt;&lt;a title="http://windowshda.com/Video/RapidProvisioning.wmv" href="http://windowshda.com/Video/RapidProvisioning.wmv" mce_href="http://windowshda.com/Video/RapidProvisioning.wmv"&gt;Rapid provisioning in action&lt;/a&gt;&lt;/p&gt; &lt;center&gt;&lt;OBJECT id=MediaPlayer standby="Loading Microsoft Windows Media Player components..." codeBase="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701" classid=CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6 width=600 height=400 type=application/x-oleobject&gt;&lt;PARAM NAME="URL" VALUE="http://windowshda.com/Video/RapidProvisioning.wmv"&gt;&lt;PARAM NAME="rate" VALUE="1"&gt;&lt;PARAM NAME="balance" VALUE="0"&gt;&lt;PARAM NAME="currentPosition" VALUE="0"&gt;&lt;PARAM NAME="defaultFrame" VALUE=""&gt;&lt;PARAM NAME="playCount" VALUE="1"&gt;&lt;PARAM NAME="autoStart" VALUE="0"&gt;&lt;PARAM NAME="currentMarker" VALUE="0"&gt;&lt;PARAM NAME="invokeURLs" VALUE="-1"&gt;&lt;PARAM NAME="baseURL" VALUE=""&gt;&lt;PARAM NAME="volume" VALUE="50"&gt;&lt;PARAM NAME="mute" VALUE="0"&gt;&lt;PARAM NAME="uiMode" VALUE="full"&gt;&lt;PARAM NAME="stretchToFit" VALUE="-1"&gt;&lt;PARAM NAME="windowlessVideo" VALUE="0"&gt;&lt;PARAM NAME="enabled" VALUE="-1"&gt;&lt;PARAM NAME="enableContextMenu" VALUE="-1"&gt;&lt;PARAM NAME="fullScreen" VALUE="0"&gt;&lt;PARAM NAME="SAMIStyle" VALUE=""&gt;&lt;PARAM NAME="SAMILang" VALUE=""&gt;&lt;PARAM NAME="SAMIFilename" VALUE=""&gt;&lt;PARAM NAME="captioningID" VALUE=""&gt;&lt;PARAM NAME="enableErrorDialogs" VALUE="0"&gt;&lt;PARAM NAME="_cx" VALUE="15875"&gt;&lt;PARAM NAME="_cy" VALUE="10583"&gt; &lt;embed width="600" height="400" src="http://windowshda.com/Video/RapidProvisioning.wmv" mce_src="http://windowshda.com/Video/RapidProvisioning.wmv" showcontrols="true" stretchtofit="true" pluginspage="http://www.microsoft.com/Windows/MediaPlayer/" name="MediaPlayer" autostart="False" EnablePositionControls="false" ShowPositionControls="true" type="application/x-mplayer2"&gt;&lt;/embed&gt;&lt;/OBJECT&gt;&lt;/center&gt; &lt;p mce_keep="true"&gt;One more thing to note here is that since these VM’s are sitting on clustered shared volumes, live migration and quick migration work just fine.&amp;nbsp; &lt;/p&gt; &lt;h4&gt;Merging the Virtual Disks&lt;/h4&gt; &lt;p&gt;There are at least a couple of issues to be concerned with with this approach.&amp;nbsp; As you add more and more machines that are using the same base image, there will be more of a demand on the the reading from the base image.&amp;nbsp; If the demands get too high, you may want to consider merging the new VM and the base image into a &lt;strong&gt;new&lt;/strong&gt; VHD that is used exclusively by the guest VM.&amp;nbsp; You will loose the disk space you were saving by sharing the parent disk as the parent to multiple VM’s.&amp;nbsp; Also note that the VM must be down while the merging takes place.&lt;/p&gt; &lt;p&gt;Lets take a look at the merge process.&lt;/p&gt; &lt;p&gt;In Hyper-V manager, go to the properties of the VM and choose Edit&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/ddc_dudes/WindowsLiveWriter/RapidprovisioningwithSCVMM2008R2_10A47/image19.png" mce_href="http://blogs.technet.com/blogfiles/ddc_dudes/WindowsLiveWriter/RapidprovisioningwithSCVMM2008R2_10A47/image_8.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.technet.com/blogfiles/ddc_dudes/WindowsLiveWriter/RapidprovisioningwithSCVMM2008R2_10A47/image19_thumb.png" width="525" height="317" mce_src="http://blogs.technet.com/blogfiles/ddc_dudes/WindowsLiveWriter/RapidprovisioningwithSCVMM2008R2_10A47/image_thumb_3.png"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Choose Merge&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/ddc_dudes/WindowsLiveWriter/RapidprovisioningwithSCVMM2008R2_10A47/image24.png" mce_href="http://blogs.technet.com/blogfiles/ddc_dudes/WindowsLiveWriter/RapidprovisioningwithSCVMM2008R2_10A47/image_10.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.technet.com/blogfiles/ddc_dudes/WindowsLiveWriter/RapidprovisioningwithSCVMM2008R2_10A47/image24_thumb.png" width="536" height="380" mce_src="http://blogs.technet.com/blogfiles/ddc_dudes/WindowsLiveWriter/RapidprovisioningwithSCVMM2008R2_10A47/image_thumb_4.png"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&lt;font color="#ff0000"&gt;Be sure you select the option to merge to a NEW VIRTUAL HARD DISK.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/ddc_dudes/WindowsLiveWriter/RapidprovisioningwithSCVMM2008R2_10A47/image30.png" mce_href="http://blogs.technet.com/blogfiles/ddc_dudes/WindowsLiveWriter/RapidprovisioningwithSCVMM2008R2_10A47/image_12.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.technet.com/blogfiles/ddc_dudes/WindowsLiveWriter/RapidprovisioningwithSCVMM2008R2_10A47/image30_thumb.png" width="531" height="329" mce_src="http://blogs.technet.com/blogfiles/ddc_dudes/WindowsLiveWriter/RapidprovisioningwithSCVMM2008R2_10A47/image_thumb_5.png"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;When the merging is complete, attach the new dedicated disk to the VM in place of the differencing disk.&lt;/p&gt; &lt;p mce_keep="true"&gt;&amp;nbsp;&lt;/p&gt; &lt;h4&gt;Additional Considerations and Questions&lt;/h4&gt; &lt;p&gt;Additional things that should be considered include:&lt;/p&gt; &lt;p&gt;1. How do I keep same base image for a single customer?&amp;nbsp; &lt;p&gt;Different approaches are out there – one is to consider keeping a copy of the master in the VMM library identified by customer if it is that specific. If the base image needs to change, then its really time to merge VM’S to a single VHD per machine.  &lt;p&gt;2. How do I keep same base image for a single type of workload?  &lt;p&gt;Create different VMM templates – the template really defines how much memory and even additional disk space the VM gets when provisioned  &lt;p&gt;3. How many diff-disks to parent are recommended (ratio)?  &lt;p&gt;This would really depend on workload expect to do some testing  &lt;p&gt;4. How to merge diff disks - and when do you do it.  &lt;p&gt;See the section above for the how to.&amp;nbsp; When to do it may depend on performance, management, patching and other considerations.  &lt;p&gt;5. How do you move a VM from one cluster to another if the diff disks are used.  &lt;p&gt;The most straightforward approach would be to merge and migrate.&amp;nbsp; Keeping base disks in sync across clusters may be too much to manage.  &lt;h4&gt;References:&lt;/h4&gt; &lt;p&gt;Rapid Provisioning in VMM 2008 R2 using the UseLocalVirtualHardDisks and SkipInstallVirtualizationGuestServices flags&lt;/p&gt; &lt;p&gt;&lt;a title="http://blogs.technet.com/m2/archive/2009/05/07/rapid-provisioning-in-vmm-2008-r2.aspx" href="http://blogs.technet.com/m2/archive/2009/05/07/rapid-provisioning-in-vmm-2008-r2.aspx" mce_href="http://blogs.technet.com/m2/archive/2009/05/07/rapid-provisioning-in-vmm-2008-r2.aspx"&gt;http://blogs.technet.com/m2/archive/2009/05/07/rapid-provisioning-in-vmm-2008-r2.aspx&lt;/a&gt;&lt;/p&gt; &lt;p mce_keep="true"&gt;&amp;nbsp;&lt;/p&gt; &lt;table border="1" cellspacing="0" cellpadding="2" width="544"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="542"&gt; &lt;p&gt;#Usage: Import-Module .\NewDiffDiskVMModule.psm1  &lt;p&gt;function New-DiffVM&lt;br&gt;{&lt;br&gt;&amp;lt;#&lt;br&gt;.Synopsis &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Creates a new Virtual Machine using Differencing Disks and Rapid Provisioning.&lt;br&gt;.Description &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; This function creates a differencing disk from a base VHD and uses the differencing&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; disk to create a new VM without having to copy the VHD file from the VMM library&lt;br&gt;.Parameter ParentVHDPath&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; This is the full path to the base VHD to be used for the differencing disk.&lt;br&gt;.Parameter NewChildVHDPath&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; This is the full path of the child differencing disk VHD that will be created. The&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Virtual Machine will reference this VHD.&lt;br&gt;.Parameter HostComputerName&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; The FQDN of the virtual machine host that is the target for this Virtual Machine.  &lt;p&gt;.Parameter VirtualMachineName&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; The name of the Virtual Machine that will be created.  &lt;p&gt;.Parameter TemplateName&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; The unique name of the VMM template that contains any Hardware or OS customizations.  &lt;p&gt;.Parameter VirtualMachineServerName&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; The FQDN of the Virtual Machine Manager server computer.  &lt;p&gt;.ReturnValue &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; None.&lt;br&gt;.Link &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; New-VM&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Move-VirtualHardDisk&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;.Notes &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : New-DiffVM&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Author&amp;nbsp;&amp;nbsp; : michael.michael@microsoft.com&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Lastedit : 05-Apr-2009&lt;br&gt;#&amp;gt;  &lt;p&gt;[CmdletBinding()]&lt;br&gt;param (&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Parameter(Mandatory=$TRUE)]&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [ValidateNotNullOrEmpty()]&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [String]$ParentVHDPath,&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Parameter(Mandatory=$TRUE)]&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [ValidateNotNullOrEmpty()]&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [String]$NewChildVHDPath,  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Parameter(Mandatory=$TRUE)]&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [ValidateNotNullOrEmpty()]&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [String]$HostComputerName,  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Parameter(Mandatory=$TRUE)]&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [ValidateNotNullOrEmpty()]&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [String]$VirtualMachineName,  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Parameter(Mandatory=$TRUE)]&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [ValidateNotNullOrEmpty()]&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [String]$TemplateName,  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Parameter(Mandatory=$TRUE)]&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [ValidateNotNullOrEmpty()]&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [String]$VirtualMachineServerName&lt;br&gt;)  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Clear-Host&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Write-Host -ForeGroundColor DarkGreen “About to get a connection to the VMM server”&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #Add the VMM server PowerShell snap-in&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #Add-PSSnapin "Microsoft.SystemCenter.VirtualMachineManager"&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #get a connection to the VMM server&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $c = get-vmmserver $VirtualMachineServerName&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #check for connectivity&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ($c.IsConnected -ne $true)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Write-Host -ForeGroundColor Red “Failed to get a connection to the VMM server”&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #get the VMM host object&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $vmhost = get-vmhost $HostComputerName  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #get the image mgmt service instance for the host computer&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $VHDService = get-wmiobject -class "Msvm_ImageManagementService" -namespace "root\virtualization" -computername $HostComputerName &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #create a differencing disk from the base disk&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $Result = $VHDService.CreateDifferencingVirtualHardDisk($NewChildVHDPath, $ParentVHDPath)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #check for diff disk creation success&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ($Result.ReturnValue -ne 0 -And $Result.ReturnValue -ne 4096)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Write-Host -ForeGroundColor Red "Failed in creating the differencing disk"&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #create jobgroup ID for new-vm from template&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $VMGuid = [System.Guid]::NewGuid().ToString()&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #specify the local location for the VHD (use the child vhd that is a diff disk)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Move-VirtualHardDisk -Bus 0 -LUN 0 -IDE -Path $NewChildVHDPath -JobGroup $VMGuid&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #get the template name&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $template = Get-Template | where {$_.Name -eq $TemplateName}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #Get the current username to be passed as the VM owner&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $callerUsername = whoami  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #create the new-vm from template and specify the Rapid Provisioning flag (-uselocalvirtualharddisks)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; New-VM -Template $template -Name $VirtualMachineName -Description "Created using Rapid Provisioning PowerShell script" -Owner $callerUsername&amp;nbsp; -SkipInstallVirtualizationGuestServices -VMHost $vmhost -UseLocalVirtualHardDisks -Path $vmhost.VMPaths[0] -RunAsynchronously -JobGroup $VMGuid | Out-Null&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Write-Host -ForeGroundColor DarkGreen "Creating the new Virtual Machine. Go to the VMM Administrator Console to monitor the progress of the job"  &lt;p&gt;}  &lt;p&gt;Export-ModuleMember -Function New-DiffVM&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3279932" width="1" height="1"&gt;</content><author><name>DDC Dudes</name><uri>http://blogs.technet.com/DDC-Dudes/ProfileUrlRedirect.ashx</uri></author></entry><entry><title>Calling into the WCF services from a Web application</title><link rel="alternate" type="text/html" href="http://blogs.technet.com/b/ddc_dudes/archive/2009/09/04/calling-into-the-wcf-services-from-a-web-application.aspx" /><id>http://blogs.technet.com/b/ddc_dudes/archive/2009/09/04/calling-into-the-wcf-services-from-a-web-application.aspx</id><published>2009-09-05T04:23:00Z</published><updated>2009-09-05T04:23:00Z</updated><content type="html">&lt;p&gt;Some of you have asked how to get started coding a user interface using the WCF based services in the Management services for hosters.  &lt;p&gt;&lt;/p&gt; &lt;p&gt;This brief presentation walks though a simple demonstration in just a few lines of code.&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;h3&gt;&lt;font color="#0000ff"&gt;&lt;a href="http://windowshda.com/Video/WCFServicesfromDotNet.wmv"&gt;Calling into WCF from ASP.NET Demo Video&lt;/a&gt;&lt;/font&gt; &lt;/h3&gt; &lt;p&gt; &lt;center&gt;&lt;object id="MediaPlayer"  width="600" height="400" classid="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6"codebase = "http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701"standby = "Loading Microsoft Windows Media Player components..."type="application/x-oleobject"&gt;&lt;param name="URL" value="http://windowshda.com/Video/WCFServicesfromDotNet.wmv"&gt;&lt;param name="showcontrols" value="true"&gt;&lt;param name="stretchtofit" value="true"&gt;&lt;PARAM NAME="AutoStart" VALUE="False"&gt;&lt;embed width="425" height="344" src="http://windowshda.com/Video/WCFServicesfromDotNet.wmv" showcontrols="true" stretchtofit="true" pluginspage="http://www.microsoft.com/Windows/MediaPlayer/" name="MediaPlayer" autostart="False" EnablePositionControls="false" ShowPositionControls="true" type="application/x-mplayer2"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/center&gt; &lt;center&gt;Double Click the media player to toggle between a full screen view and embedded&lt;/center&gt; &lt;p&gt;&lt;br&gt;&lt;br&gt;The actual code that toggles the state of the VM is in the below code snippet. &lt;/p&gt; &lt;p&gt;&lt;br&gt;VirtualizationService.VirtualizationProvisioningServiceClient client = new VirtualizationProvisioningServiceClient();&lt;br&gt;&lt;/p&gt; &lt;p&gt;VirtualizationService.VirtualComputerSystemInfo info = client.GetVirtualSystem("myguest", "myhostserver", "yourdomain.com", "administrator", "xxxxxxxxx");&lt;br&gt;&lt;/p&gt; &lt;p&gt;if (info.State == VirtualizationService.EnabledStateInfo.Enabled)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; client.PauseVirtualSystem("myguest", "myhostserver", "yourdomain.com", "administrator", "xxxxxxxxx");&lt;br&gt;else&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; client.StartVirtualSystem("myguest", "myhostserver", "yourdomain.com", "administrator", "xxxxxxxxx"); &lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3279314" width="1" height="1"&gt;</content><author><name>DDC Dudes</name><uri>http://blogs.technet.com/DDC-Dudes/ProfileUrlRedirect.ashx</uri></author><category term="Hyper-V" scheme="http://blogs.technet.com/b/ddc_dudes/archive/tags/Hyper_2D00_V/" /><category term="Dynamic Datacenter" scheme="http://blogs.technet.com/b/ddc_dudes/archive/tags/Dynamic+Datacenter/" /><category term="WCF" scheme="http://blogs.technet.com/b/ddc_dudes/archive/tags/WCF/" /><category term="Hosting" scheme="http://blogs.technet.com/b/ddc_dudes/archive/tags/Hosting/" /></entry><entry><title>Bare metal provision Windows 2008 Server R2 to boot from VHD</title><link rel="alternate" type="text/html" href="http://blogs.technet.com/b/ddc_dudes/archive/2009/08/31/bare-metal-provision-windows-2008-server-r2-to-boot-from-vhd.aspx" /><id>http://blogs.technet.com/b/ddc_dudes/archive/2009/08/31/bare-metal-provision-windows-2008-server-r2-to-boot-from-vhd.aspx</id><published>2009-09-01T04:23:00Z</published><updated>2009-09-01T04:23:00Z</updated><content type="html">&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:6d873710-728e-4511-bc22-8647760183d2" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/VHD" rel="tag"&gt;VHD&lt;/a&gt;,&lt;a href="http://technorati.com/tags/USB" rel="tag"&gt;USB&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Provision" rel="tag"&gt;Provision&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Bare+Metal" rel="tag"&gt;Bare Metal&lt;/a&gt;&lt;/div&gt; &lt;p&gt;Ever have one of those you can’t get there from here problems.&amp;nbsp; The problem I faced was I wanted take a bare metal server with nothing on it and be able to boot it up and run Windows Server 2008 R2.&amp;nbsp; Easy enough, but I also wanted to configure it to boot from VHD and not have to install an OS then configure the boot from VHD.&amp;nbsp; &lt;/p&gt; &lt;p&gt;After reading multiple blogs on the boot from VHD and sysprepping an image, I got started on how to automate the process.&lt;/p&gt; &lt;h4&gt;Goals&lt;/h4&gt; &lt;p&gt;A couple of the goals I had were to be able to boot to a USB thumb drive, DVD or even in to an ISO image if I wanted this to be re-usable inside a Hyper-V guest and even to test this out.&amp;nbsp; Below I list some helpful references that describe how to add the boot from VHD to the boot menu using BCDEDIT.&amp;nbsp; how to build a bootable thumbdrive that boots to windows PE and the useful WIM2VHD conversion tool that makes creating a sysprepped image from a WIM easy.&lt;/p&gt; &lt;p&gt;Using the copype command in the Windows AIK, I created both an amd_64 as well as x86 Windows PE folders on my hard drive to work with.&amp;nbsp; I started working with the amd64 environment but was having trouble getting it to boot.&amp;nbsp; I switched over to the x86 and and WinPE would reliable boot for me on the thumb drive so I kept working with the x86 PE environment.&amp;nbsp; This little tidbit is important later on.&lt;/p&gt; &lt;h4&gt;Putting together the pieces&lt;/h4&gt; &lt;p&gt;After copying the PE working folder off, you end up with an ISO folder that has the PE environment.&amp;nbsp; You can just copy this to the thumb drive but you will be missing a key utility which is the bcdedit.exe.&amp;nbsp; Now I wanted to to deploy Windows Server 2008 R2 which is a 64 bit only OS.&amp;nbsp; When reading other blogs on booting to VHD, which were most frequently using boot to VHD with Window 7, the directions would have you mound the sysprepped image and run the BCD edit from that image.&amp;nbsp; In my case, when I tried to do that, the bcdedit in the image was amd_64 and I was running x86 PE so it would not run.&amp;nbsp; I grabbed the bcdedit.exe from Windows 7 32 bit and placed it in my PE ISO folder so I could use it to edit the boot loader.&amp;nbsp; Also grab timeout.exe from the 32 bit Windows7 Windows\System32 folder and place it in the ISO folder.&lt;/p&gt; &lt;p&gt;Next I copied my sysprepped Win2K8R2 Datacenter image to the Windows PE ISO folder.&amp;nbsp; Size of the folder was now huge but thats ok it would still fit on an 8Gb thumb drive.&amp;nbsp; The sysprepped vhd was about 6.5 GB in size.&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/ddc_dudes/WindowsLiveWriter/FrombaremetaltobootfromVHD_D4D4/image_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.technet.com/blogfiles/ddc_dudes/WindowsLiveWriter/FrombaremetaltobootfromVHD_D4D4/image_thumb.png" width="559" height="480"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;I wanted to test this out so I took the ISO folder and made a bootable ISO image.&amp;nbsp; The steps to partition the and provision the machine are pretty simple once you get them working.&amp;nbsp; I put the commands into the below .cmd file to make it easy.&amp;nbsp; &lt;/p&gt; &lt;p&gt;createvhdboot.cmd contents:&lt;/p&gt; &lt;table border="1" cellspacing="0" cellpadding="2" width="400"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="400"&gt; &lt;p&gt;diskpart /s diskpart.txt&lt;br&gt;copy d:\*.vhd c:  &lt;p&gt;diskpart /s attachdisk.txt&lt;br&gt;timeout /t 2&lt;br&gt;diskpart /s assigndrive.txt  &lt;p&gt;bcdboot h:\windows /s c:&lt;br&gt;d:\bcdedit /store c:\boot\bcd /set {default} device vhd=[locate]\dcprep.vhd&lt;br&gt;d:\bcdedit /store c:\boot\bcd /set {default} osdevice vhd=[locate]\dcprep.vhd&lt;br&gt;c:&lt;br&gt;cd \boot&lt;br&gt;REM bootsect /nt60 c: /force /mbr&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;&amp;nbsp; &lt;p&gt;The diskpart.txt just selects Disk 0 and prepares it for the copying the vhd image.&lt;/p&gt; &lt;table border="1" cellspacing="0" cellpadding="2" width="400"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="400"&gt; &lt;p&gt;sel disk 0&lt;br&gt;clean&lt;br&gt;create partition primary&lt;br&gt;format quick fs=ntfs&lt;br&gt;assign letter=c&lt;br&gt;select partition 1&lt;br&gt;active&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;One problem I ran into was the diskpart command failing when mounting the vhd because of what appears to be a delay from the time the vhd is mounted and the volume being available in the next step.&amp;nbsp; That was the reason for the timeout delay in the above command file between mounting the disk and assigning the drive.  &lt;p&gt;The attachdisk.txt is also pretty straightforward:&lt;/p&gt; &lt;table border="1" cellspacing="0" cellpadding="2" width="400"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="400"&gt;select vdisk file=C:\dcprep.vhd&lt;br&gt;attach vdisk&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;h3&gt;&amp;nbsp;&lt;/h3&gt; &lt;p&gt;Next the contents of the assigndrive.txt to assign a drive to the mounted vhd&lt;/p&gt; &lt;table border="1" cellspacing="0" cellpadding="2" width="400"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="400"&gt; &lt;p&gt;select disk 1&lt;br&gt;select volume 2&lt;br&gt;assign letter=h&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;Once the host VHD disk is attached as drive H, we can use BCDBoot to copy the bootloader from that image to the physical C Drive on the host.&lt;/p&gt; &lt;p&gt;bcdboot h:\windows /s c:&lt;/p&gt; &lt;p&gt;When the bootloader is copied over, next we use the bcdedit to point to the new store on the C drive and tell it to boot to the VHD.&amp;nbsp; Those are the set device and set osdevice commands.&lt;/p&gt; &lt;p&gt;d:\bcdedit /store c:\boot\bcd /set {default} device vhd=[locate]\dcprep.vhd&lt;br&gt;d:\bcdedit /store c:\boot\bcd /set {default} osdevice vhd=[locate]\dcprep.vhd&lt;br&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;One final part that I found while researching this.&amp;nbsp; Lets say we have the boot loader on the disk but it still won’t boot.&amp;nbsp; Doing some digging, I found that the bootsect.exe that gets copied in the hidden boot folder by bcdboot was just what I needed.&amp;nbsp; This should not be needed but can come in handy.&lt;/p&gt; &lt;p&gt;bootsect /nt60 c: /force&amp;nbsp; &lt;/p&gt; &lt;p&gt;This fixes up the the boot sector to make the drive bootable. &lt;/p&gt; &lt;h4&gt;&amp;nbsp;&lt;/h4&gt; &lt;h4&gt;Making a bootable DVD to run this&lt;/h4&gt; &lt;p&gt;So lastly now that the ISO folder has everything you need what if you want to place all this on a DVD and make it bootable so you can bare metal provision a server from the DVD.&amp;nbsp; Again the AIK comes in and you can use the oscdimg.exe command to create an ISO that can be burned to DVD or even boot a Hyper-V guest into a vhd.&amp;nbsp; One note- drive letters will likely need to be changed in the command file when booting from DVD.&lt;/p&gt; &lt;p&gt;oscdimg.exe -h -u2&amp;nbsp; -b"c:\Program Files\Windows AIK\Tools\PETools\x86\boot\etfsboot.com" D:\windowspe_x86\iso D:\windowspe_x86\PEProvision.iso&lt;/p&gt; &lt;h3&gt;References with useful material&lt;/h3&gt; &lt;p&gt;Windows 7 and 2008 Server R2 Automated Install Kit&lt;br&gt;&lt;a title="http://www.microsoft.com/downloads/details.aspx?familyid=696DD665-9F76-4177-A811-39C26D3B3B34&amp;amp;displaylang=en" href="http://www.microsoft.com/downloads/details.aspx?familyid=696DD665-9F76-4177-A811-39C26D3B3B34&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?familyid=696DD665-9F76-4177-A811-39C26D3B3B34&amp;amp;displaylang=en&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Adding a VHD drive to the native boot menu&lt;br&gt;&lt;a title="http://technet.microsoft.com/en-us/library/dd799299(WS.10).aspx" href="http://technet.microsoft.com/en-us/library/dd799299(WS.10).aspx"&gt;http://technet.microsoft.com/en-us/library/dd799299(WS.10).aspx&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Booting to a USB drive using MDT 2010&lt;br&gt;&lt;a title="http://www.cluberti.com/blog/2009/08/10/mdt-2010-and-deployment-from-a-usb-key/" href="http://www.cluberti.com/blog/2009/08/10/mdt-2010-and-deployment-from-a-usb-key/"&gt;http://www.cluberti.com/blog/2009/08/10/mdt-2010-and-deployment-from-a-usb-key/&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Walkthrough: Create a Bootable Windows PE RAM Disk on UFD&lt;br&gt;&lt;a title="http://technet.microsoft.com/en-us/library/cc766092(WS.10).aspx" href="http://technet.microsoft.com/en-us/library/cc766092(WS.10).aspx"&gt;http://technet.microsoft.com/en-us/library/cc766092(WS.10).aspx&lt;/a&gt;&lt;/p&gt; &lt;p&gt;WIM2VHD converter&lt;br&gt;&lt;a title="http://code.msdn.microsoft.com/wim2vhd" href="http://code.msdn.microsoft.com/wim2vhd"&gt;http://code.msdn.microsoft.com/wim2vhd&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3279315" width="1" height="1"&gt;</content><author><name>DDC Dudes</name><uri>http://blogs.technet.com/DDC-Dudes/ProfileUrlRedirect.ashx</uri></author></entry></feed>