<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Crescent City Networking &#187; Hyper-V</title>
	<atom:link href="http://ccnetworking.com/wordpress/archives/tag/hyper-v/feed" rel="self" type="application/rss+xml" />
	<link>http://ccnetworking.com/wordpress</link>
	<description></description>
	<lastBuildDate>Wed, 28 Jul 2010 16:31:39 +0000</lastBuildDate>
	
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Hyper-V Links for Friday Night</title>
		<link>http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/07/16/hyper-v-links-for-friday-night.aspx</link>
		<comments>http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/07/16/hyper-v-links-for-friday-night.aspx#comments</comments>
		<pubDate>Sat, 17 Jul 2010 04:29:26 +0000</pubDate>
		<dc:creator>Virtual PC Guy</dc:creator>
				<category><![CDATA[Hyper-V]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Windows Server 2008 R2]]></category>
		<category><![CDATA[Virtualization]]></category>

		<guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10039391</guid>
		<description><![CDATA[<div class="wlWriterHeaderFooter" style="float:none;margin:0px;padding:0px 0px 0px 0px"> tweetmeme_url = 'http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/07/16/hyper-v-links-for-friday-night.aspx';  <br /><br /></div><p>Well, the week is over so I thought I would quickly share some links.</p>  <p>Vijay has posted a great article on <a href="http://blogs.technet.com/b/virtualization/archive/2010/07/16/installing-service-pack-1-on-microsoft-hyper-v-server-2008-r2.aspx" target="_blank">how to install the SP1 beta on our standalone Hyper-V Server product</a>.&#160; So now you really have no excuse to not be looking at dynamic memory / RemoteFX (both of which are supported on Hyper-V Server).</p>  <p>Meanwhile – the Virtualization launch page on TechNet (<a title="http://technet.microsoft.com/en-us/bb802511.aspx" href="http://technet.microsoft.com/en-us/bb802511.aspx">http://technet.microsoft.com/en-us/bb802511.aspx</a>) has been updated with a “Hyper-V Tools” section that gives you pointers to a number of home grown tools from Microsoft for working with Hyper-V:</p>  <p><img style="border-bottom: 0px;border-left: 0px;border-top: 0px;border-right: 0px" class="wlDisabledImage" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-41-22-metablogapi/6254.image_5F00_63E80875.png" width="405" height="385" /></p>  <p>Cheers,   <br />Ben</p><div style="clear:both"></div><img src="http://blogs.msdn.com/aggbug.aspx?PostID=10039391" width="1" height="1"/>]]></description>
			<content:encoded><![CDATA[<div class="wlWriterHeaderFooter" style="float:none; margin:0px; padding:0px 0px 0px 0px;"><script type="text/javascript"> tweetmeme_url = 'http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/07/16/hyper-v-links-for-friday-night.aspx'; </script> <script type="text/javascript" src="http://tweetmeme.com/i/scripts/button.js"></script><br /><br /></div><p>Well, the week is over so I thought I would quickly share some links.</p>  <p>Vijay has posted a great article on <a href="http://blogs.technet.com/b/virtualization/archive/2010/07/16/installing-service-pack-1-on-microsoft-hyper-v-server-2008-r2.aspx" >how to install the SP1 beta on our standalone Hyper-V Server product</a>.&#160; So now you really have no excuse to not be looking at dynamic memory / RemoteFX (both of which are supported on Hyper-V Server).</p>  <p>Meanwhile – the Virtualization launch page on TechNet (<a title="http://technet.microsoft.com/en-us/bb802511.aspx" href="http://technet.microsoft.com/en-us/bb802511.aspx">http://technet.microsoft.com/en-us/bb802511.aspx</a>) has been updated with a “Hyper-V Tools” section that gives you pointers to a number of home grown tools from Microsoft for working with Hyper-V:</p>  <p><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" class="wlDisabledImage" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-41-22-metablogapi/6254.image_5F00_63E80875.png" width="405" height="385" /></p>  <p>Cheers,   <br />Ben</p><div style="clear:both;"></div><img src="http://blogs.msdn.com/aggbug.aspx?PostID=10039391" width="1" height="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/07/16/hyper-v-links-for-friday-night.aspx/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dynamic Memory Resources</title>
		<link>http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/07/13/dynamic-memory-resources.aspx</link>
		<comments>http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/07/13/dynamic-memory-resources.aspx#comments</comments>
		<pubDate>Wed, 14 Jul 2010 00:37:44 +0000</pubDate>
		<dc:creator>Virtual PC Guy</dc:creator>
				<category><![CDATA[Hyper-V]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Windows Server 2008 R2]]></category>
		<category><![CDATA[Virtualization]]></category>

		<guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10037849</guid>
		<description><![CDATA[<div class="wlWriterHeaderFooter" style="float:none;margin:0px;padding:0px 0px 0px 0px"> tweetmeme_url = 'http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/07/13/dynamic-memory-resources.aspx';  <br /><br /></div><p>If you are thinking about trying out dynamic memory in the Windows Server 2008 R2 SP1 beta release – here are some handy resources to read before you get going:</p>  <blockquote>   <p><strong>Dynamic Memory Technical Overview whitepaper</strong></p>    <p>This paper talks about what dynamic memory is, what it does and how it does it.&#160; It is a good read for those curious to understand what is happening under the covers.</p>    <p><a title="http://download.microsoft.com/download/E/0/5/E05DF049-8220-4AEE-818B-786ADD9B434E/Implementing_and_Configuring_Dynamic_Memory.docx" href="http://download.microsoft.com/download/E/0/5/E05DF049-8220-4AEE-818B-786ADD9B434E/Implementing_and_Configuring_Dynamic_Memory.docx">http://download.microsoft.com/download/E/0/5/E05DF049-8220-4AEE-818B-786ADD9B434E/Implementing_and_Configuring_Dynamic_Memory.docx</a></p>    <p><strong>Hyper-V Dynamic Memory Evaluation Guide</strong></p>    <p>This article steps you through the process of setting up SP1 and enabling dynamic memory.&#160; It also gives you some good tips on configuration and troubleshooting.</p>    <p><a title="http://technet.microsoft.com/en-us/library/ff817651(WS.10).aspx" href="http://technet.microsoft.com/en-us/library/ff817651(WS.10).aspx">http://technet.microsoft.com/en-us/library/ff817651(WS.10).aspx</a></p>    <p><strong>Windows Server 2008 R2 Service Pack 1 – TechNet Center</strong></p>    <p>For all things “Windows Server 2008 R2 Service Pack 1” related – the TechNet Center has you covered.</p>    <p><a title="http://technet.microsoft.com/en-us/library/ff817647(WS.10).aspx" href="http://technet.microsoft.com/en-us/library/ff817647(WS.10).aspx">http://technet.microsoft.com/en-us/library/ff817647(WS.10).aspx</a></p>    <p><strong>Hyper-V: Dynamic Memory Survival Guide</strong></p>    <p>The TechNet Wiki also has a “Dynamic Memory Survival Guide” article with some extra links.</p>    <p><a title="http://social.technet.microsoft.com/wiki/contents/articles/hyper-v-dynamic-memory-survival-guide.aspx" href="http://social.technet.microsoft.com/wiki/contents/articles/hyper-v-dynamic-memory-survival-guide.aspx">http://social.technet.microsoft.com/wiki/contents/articles/hyper-v-dynamic-memory-survival-guide.aspx</a></p> </blockquote>  <p>Cheers,   <br />Ben</p><div style="clear:both"></div><img src="http://blogs.msdn.com/aggbug.aspx?PostID=10037849" width="1" height="1"/>]]></description>
			<content:encoded><![CDATA[<div class="wlWriterHeaderFooter" style="float:none; margin:0px; padding:0px 0px 0px 0px;"><script type="text/javascript"> tweetmeme_url = 'http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/07/13/dynamic-memory-resources.aspx'; </script> <script type="text/javascript" src="http://tweetmeme.com/i/scripts/button.js"></script><br /><br /></div><p>If you are thinking about trying out dynamic memory in the Windows Server 2008 R2 SP1 beta release – here are some handy resources to read before you get going:</p>  <blockquote>   <p><strong>Dynamic Memory Technical Overview whitepaper</strong></p>    <p>This paper talks about what dynamic memory is, what it does and how it does it.&#160; It is a good read for those curious to understand what is happening under the covers.</p>    <p><a title="http://download.microsoft.com/download/E/0/5/E05DF049-8220-4AEE-818B-786ADD9B434E/Implementing_and_Configuring_Dynamic_Memory.docx" href="http://download.microsoft.com/download/E/0/5/E05DF049-8220-4AEE-818B-786ADD9B434E/Implementing_and_Configuring_Dynamic_Memory.docx">http://download.microsoft.com/download/E/0/5/E05DF049-8220-4AEE-818B-786ADD9B434E/Implementing_and_Configuring_Dynamic_Memory.docx</a></p>    <p><strong>Hyper-V Dynamic Memory Evaluation Guide</strong></p>    <p>This article steps you through the process of setting up SP1 and enabling dynamic memory.&#160; It also gives you some good tips on configuration and troubleshooting.</p>    <p><a title="http://technet.microsoft.com/en-us/library/ff817651(WS.10).aspx" href="http://technet.microsoft.com/en-us/library/ff817651(WS.10).aspx">http://technet.microsoft.com/en-us/library/ff817651(WS.10).aspx</a></p>    <p><strong>Windows Server 2008 R2 Service Pack 1 – TechNet Center</strong></p>    <p>For all things “Windows Server 2008 R2 Service Pack 1” related – the TechNet Center has you covered.</p>    <p><a title="http://technet.microsoft.com/en-us/library/ff817647(WS.10).aspx" href="http://technet.microsoft.com/en-us/library/ff817647(WS.10).aspx">http://technet.microsoft.com/en-us/library/ff817647(WS.10).aspx</a></p>    <p><strong>Hyper-V: Dynamic Memory Survival Guide</strong></p>    <p>The TechNet Wiki also has a “Dynamic Memory Survival Guide” article with some extra links.</p>    <p><a title="http://social.technet.microsoft.com/wiki/contents/articles/hyper-v-dynamic-memory-survival-guide.aspx" href="http://social.technet.microsoft.com/wiki/contents/articles/hyper-v-dynamic-memory-survival-guide.aspx">http://social.technet.microsoft.com/wiki/contents/articles/hyper-v-dynamic-memory-survival-guide.aspx</a></p> </blockquote>  <p>Cheers,   <br />Ben</p><div style="clear:both;"></div><img src="http://blogs.msdn.com/aggbug.aspx?PostID=10037849" width="1" height="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/07/13/dynamic-memory-resources.aspx/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dynamic Memory Beta – Supported Guest Operating systems</title>
		<link>http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/07/12/dynamic-memory-beta-supported-guest-operating-systems.aspx</link>
		<comments>http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/07/12/dynamic-memory-beta-supported-guest-operating-systems.aspx#comments</comments>
		<pubDate>Mon, 12 Jul 2010 17:58:00 +0000</pubDate>
		<dc:creator>Virtual PC Guy</dc:creator>
				<category><![CDATA[Hyper-V]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Windows Server 2008 R2]]></category>
		<category><![CDATA[Virtualization]]></category>

		<guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10037223</guid>
		<description><![CDATA[<div class="wlWriterHeaderFooter" style="float:none;margin:0px;padding:0px 0px 0px 0px">


<br /><br /></div>
<p>At TechEd this year we announced that dynamic memory would be supported for virtual machines that were running the following guest operating systems:</p>
<ul>
<li>Windows Server 2003 Web, Standard, Enterprise &#38; Datacenter (32-bit and 64-bit)</li>
<li>Windows Server 2003 R2 Web, Standard, Enterprise &#38; Datacenter (32-bit and 64-bit)</li>
<li>Windows Server 2008 Web, Standard, Enterprise &#38; Datacenter (32-bit and 64-bit)</li>
<li>Windows Server 2008 R2 Web, Standard, Enterprise &#38; Datacenter (64-bit)</li>
<li>Windows Vista Enterprise &#38; Ultimate (32-bit and 64-bit)</li>
<li>Windows 7 Enterprise &#38; Ultimate (32-bit and 64-bit)</li>
</ul>
<p>But not all of these operating systems will support dynamic memory with the beta release.&#160; Only the following operating systems are supported with the beta release:</p>
<ul>
<li>Windows Server 2003 Enterprise &#38; Datacenter (32-bit and 64-bit)</li>
<li>Windows Server 2003 R2 Enterprise &#38; Datacenter (32-bit and 64-bit)</li>
<li>Windows Server 2008 Enterprise &#38; Datacenter (32-bit and 64-bit)</li>
<li>Windows Server 2008 R2 Enterprise &#38; Datacenter (64-bit)</li>
<li>Windows Vista Enterprise &#38; Ultimate (32-bit and 64-bit)</li>
<li>Windows 7 Enterprise &#38; Ultimate (32-bit and 64-bit)</li>
</ul>
<p>The following guest operating systems will be supported after the beta release:</p>
<ul>
<li>Windows Server 2003 Web &#38; Standard (32-bit and 64-bit)</li>
<li>Windows Server 2003 R2 Web &#38; Standard (32-bit and 64-bit)</li>
<li>Windows Server 2008 Web &#38; Standard (32-bit and 64-bit)</li>
<li>Windows Server 2008 R2 Web &#38; Standard (64-bit)</li>
</ul>
<p>Cheers, <br />Ben</p><div style="clear:both"></div><img src="http://blogs.msdn.com/aggbug.aspx?PostID=10037223" width="1" height="1"/>]]></description>
			<content:encoded><![CDATA[<div class="wlWriterHeaderFooter" style="float:none; margin:0px; padding:0px 0px 0px 0px;">
<script type="text/javascript"><!--
 tweetmeme_url = 'http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/07/12/dynamic-memory-beta-supported-guest-operating-systems.aspx'; 
// --></script>
<script src="http://tweetmeme.com/i/scripts/button.js" type="text/javascript"></script>
<br /><br /></div>
<p>At TechEd this year we announced that dynamic memory would be supported for virtual machines that were running the following guest operating systems:</p>
<ul>
<li>Windows Server 2003 Web, Standard, Enterprise &amp; Datacenter (32-bit and 64-bit)</li>
<li>Windows Server 2003 R2 Web, Standard, Enterprise &amp; Datacenter (32-bit and 64-bit)</li>
<li>Windows Server 2008 Web, Standard, Enterprise &amp; Datacenter (32-bit and 64-bit)</li>
<li>Windows Server 2008 R2 Web, Standard, Enterprise &amp; Datacenter (64-bit)</li>
<li>Windows Vista Enterprise &amp; Ultimate (32-bit and 64-bit)</li>
<li>Windows 7 Enterprise &amp; Ultimate (32-bit and 64-bit)</li>
</ul>
<p>But not all of these operating systems will support dynamic memory with the beta release.&nbsp; Only the following operating systems are supported with the beta release:</p>
<ul>
<li>Windows Server 2003 Enterprise &amp; Datacenter (32-bit and 64-bit)</li>
<li>Windows Server 2003 R2 Enterprise &amp; Datacenter (32-bit and 64-bit)</li>
<li>Windows Server 2008 Enterprise &amp; Datacenter (32-bit and 64-bit)</li>
<li>Windows Server 2008 R2 Enterprise &amp; Datacenter (64-bit)</li>
<li>Windows Vista Enterprise &amp; Ultimate (32-bit and 64-bit)</li>
<li>Windows 7 Enterprise &amp; Ultimate (32-bit and 64-bit)</li>
</ul>
<p>The following guest operating systems will be supported after the beta release:</p>
<ul>
<li>Windows Server 2003 Web &amp; Standard (32-bit and 64-bit)</li>
<li>Windows Server 2003 R2 Web &amp; Standard (32-bit and 64-bit)</li>
<li>Windows Server 2008 Web &amp; Standard (32-bit and 64-bit)</li>
<li>Windows Server 2008 R2 Web &amp; Standard (64-bit)</li>
</ul>
<p>Cheers, <br />Ben</p><div style="clear:both;"></div><img src="http://blogs.msdn.com/aggbug.aspx?PostID=10037223" width="1" height="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/07/12/dynamic-memory-beta-supported-guest-operating-systems.aspx/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows Server 2008 R2 SP1 Beta now available</title>
		<link>http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/07/12/windows-server-2008-r2-sp1-beta-now-available.aspx</link>
		<comments>http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/07/12/windows-server-2008-r2-sp1-beta-now-available.aspx#comments</comments>
		<pubDate>Mon, 12 Jul 2010 17:28:01 +0000</pubDate>
		<dc:creator>Virtual PC Guy</dc:creator>
				<category><![CDATA[Hyper-V]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Windows Server 2008 R2]]></category>
		<category><![CDATA[Virtualization]]></category>

		<guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10037206</guid>
		<description><![CDATA[<div class="wlWriterHeaderFooter" style="float:none;margin:0px;padding:0px 0px 0px 0px"> tweetmeme_url = 'http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/07/12/windows-server-2008-r2-sp1-beta-now-available.aspx';  <br /><br /></div><p>Starting today you can download the Windows Server 2008 R2 SP1 beta release.&#160; For Hyper-V this specifically means that you can start evaluating the following new Hyper-V features:</p>  <ul>   <li>Dynamic Memory – the new feature that allows Hyper-V to dynamically change the amount of memory assigned to a virtual machine at run time, to get higher consolidation ratios.&#160; I spoke about this at TechEd US 2010 – and you can <a href="http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/06/10/talking-about-dynamic-memory-the-movie.aspx" target="_blank">watch the movie here</a>. </li>    <li>RemoteFX – provides support for rich graphics (Silverlight, 3D, etc…) when using Hyper-V to host desktop virtual machines. </li> </ul>  <p>You can register to download the beta here: <a title="http://www.microsoft.com/windowsserver2008/en/us/sp1.aspx" href="http://www.microsoft.com/windowsserver2008/en/us/sp1.aspx">http://www.microsoft.com/windowsserver2008/en/us/sp1.aspx</a></p>  <p>Note that while registration is required, there is no approval process and you will get immediate access to the bits.</p>  <p>Cheers,    <br />Ben</p><div style="clear:both"></div><img src="http://blogs.msdn.com/aggbug.aspx?PostID=10037206" width="1" height="1"/>]]></description>
			<content:encoded><![CDATA[<div class="wlWriterHeaderFooter" style="float:none; margin:0px; padding:0px 0px 0px 0px;"><script type="text/javascript"> tweetmeme_url = 'http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/07/12/windows-server-2008-r2-sp1-beta-now-available.aspx'; </script> <script type="text/javascript" src="http://tweetmeme.com/i/scripts/button.js"></script><br /><br /></div><p>Starting today you can download the Windows Server 2008 R2 SP1 beta release.&#160; For Hyper-V this specifically means that you can start evaluating the following new Hyper-V features:</p>  <ul>   <li>Dynamic Memory – the new feature that allows Hyper-V to dynamically change the amount of memory assigned to a virtual machine at run time, to get higher consolidation ratios.&#160; I spoke about this at TechEd US 2010 – and you can <a href="http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/06/10/talking-about-dynamic-memory-the-movie.aspx" >watch the movie here</a>. </li>    <li>RemoteFX – provides support for rich graphics (Silverlight, 3D, etc…) when using Hyper-V to host desktop virtual machines. </li> </ul>  <p>You can register to download the beta here: <a title="http://www.microsoft.com/windowsserver2008/en/us/sp1.aspx" href="http://www.microsoft.com/windowsserver2008/en/us/sp1.aspx">http://www.microsoft.com/windowsserver2008/en/us/sp1.aspx</a></p>  <p>Note that while registration is required, there is no approval process and you will get immediate access to the bits.</p>  <p>Cheers,    <br />Ben</p><div style="clear:both;"></div><img src="http://blogs.msdn.com/aggbug.aspx?PostID=10037206" width="1" height="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/07/12/windows-server-2008-r2-sp1-beta-now-available.aspx/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I need to read my own blog more often…</title>
		<link>http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/07/08/i-need-to-read-my-own-blog-more-often.aspx</link>
		<comments>http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/07/08/i-need-to-read-my-own-blog-more-often.aspx#comments</comments>
		<pubDate>Fri, 09 Jul 2010 06:16:53 +0000</pubDate>
		<dc:creator>Virtual PC Guy</dc:creator>
				<category><![CDATA[Hyper-V]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Tech / Microsoft Talk]]></category>
		<category><![CDATA[Virtualization]]></category>

		<guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10036255</guid>
		<description><![CDATA[<div class="wlWriterHeaderFooter" style="float:none;margin:0px;padding:0px 0px 0px 0px"> tweetmeme_url = 'http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/07/08/i-need-to-read-my-own-blog-more-often.aspx';  <br /><br /></div><p>Over the last couple of weeks I have been playing around with some new (for me) server technology.&#160; This has been a lot of fun – and I have been learning a lot.&#160; However, a couple of days ago things started to go wrong.</p>  <p>Specifically I started seeing all sorts of strange problems with my Hyper-V server.&#160; Virtual machines started going offline randomly.&#160; The whole system would go unresponsive for a couple of minutes and then come back.&#160; Once or twice the management operating system stopped responding, while virtual machines continued to respond over the network.</p>  <p>This was concerning to say the least.</p>  <p>However, as I have been busy this week I did not have time to investigate properly.&#160; After three nights dealing with this behavior, I was starting to wonder if I had some failing hardware, and was thinking about what I would need to do over the weekend to track down the cause of the problem.</p>  <p>Then - as I was driving home yesterday – I suddenly realized what the problem was.&#160; Last weekend I had setup a login script for my domain that would install antivirus automatically on any domain-joined computer that did not have antivirus on it already.&#160; When I got home I checked – and there it was.&#160; I setup exclusions for Hyper-V and my server has been rock solid ever since.</p>  <p>Now, why am I feeling quite foolish to recount this story?&#160; Apart from the obvious fact that it took me days to figure out what the problem was – I have already blogged <a href="http://blogs.msdn.com/b/virtual_pc_guy/archive/2009/03/17/antivirus-and-hyper-v-or-why-can-t-i-start-my-virtual-machine.aspx" target="_blank">about this exact problem</a>.&#160; <a href="http://blogs.msdn.com/b/virtual_pc_guy/archive/2005/09/14/466291.aspx" target="_blank">Twice</a>.</p>  <p>Sigh…</p>  <p>Cheers,   <br />Ben</p><div style="clear:both"></div><img src="http://blogs.msdn.com/aggbug.aspx?PostID=10036255" width="1" height="1"/>]]></description>
			<content:encoded><![CDATA[<div class="wlWriterHeaderFooter" style="float:none; margin:0px; padding:0px 0px 0px 0px;"><script type="text/javascript"> tweetmeme_url = 'http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/07/08/i-need-to-read-my-own-blog-more-often.aspx'; </script> <script type="text/javascript" src="http://tweetmeme.com/i/scripts/button.js"></script><br /><br /></div><p>Over the last couple of weeks I have been playing around with some new (for me) server technology.&#160; This has been a lot of fun – and I have been learning a lot.&#160; However, a couple of days ago things started to go wrong.</p>  <p>Specifically I started seeing all sorts of strange problems with my Hyper-V server.&#160; Virtual machines started going offline randomly.&#160; The whole system would go unresponsive for a couple of minutes and then come back.&#160; Once or twice the management operating system stopped responding, while virtual machines continued to respond over the network.</p>  <p>This was concerning to say the least.</p>  <p>However, as I have been busy this week I did not have time to investigate properly.&#160; After three nights dealing with this behavior, I was starting to wonder if I had some failing hardware, and was thinking about what I would need to do over the weekend to track down the cause of the problem.</p>  <p>Then - as I was driving home yesterday – I suddenly realized what the problem was.&#160; Last weekend I had setup a login script for my domain that would install antivirus automatically on any domain-joined computer that did not have antivirus on it already.&#160; When I got home I checked – and there it was.&#160; I setup exclusions for Hyper-V and my server has been rock solid ever since.</p>  <p>Now, why am I feeling quite foolish to recount this story?&#160; Apart from the obvious fact that it took me days to figure out what the problem was – I have already blogged <a href="http://blogs.msdn.com/b/virtual_pc_guy/archive/2009/03/17/antivirus-and-hyper-v-or-why-can-t-i-start-my-virtual-machine.aspx" >about this exact problem</a>.&#160; <a href="http://blogs.msdn.com/b/virtual_pc_guy/archive/2005/09/14/466291.aspx" >Twice</a>.</p>  <p>Sigh…</p>  <p>Cheers,   <br />Ben</p><div style="clear:both;"></div><img src="http://blogs.msdn.com/aggbug.aspx?PostID=10036255" width="1" height="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/07/08/i-need-to-read-my-own-blog-more-often.aspx/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installing Windows Virtual PC on Windows 7 Home Editions</title>
		<link>http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/07/07/installing-windows-virtual-pc-on-windows-7-home-editions.aspx</link>
		<comments>http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/07/07/installing-windows-virtual-pc-on-windows-7-home-editions.aspx#comments</comments>
		<pubDate>Thu, 08 Jul 2010 06:25:47 +0000</pubDate>
		<dc:creator>Virtual PC Guy</dc:creator>
				<category><![CDATA[Hyper-V]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Windows 7]]></category>
		<category><![CDATA[Windows Virtual PC]]></category>
		<category><![CDATA[Virtualization]]></category>

		<guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10035747</guid>
		<description><![CDATA[<div class="wlWriterHeaderFooter" style="float:none;margin:0px;padding:0px 0px 0px 0px"> tweetmeme_url = 'http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/07/07/installing-windows-virtual-pc-on-windows-7-home-editions.aspx';  <br /><br /></div><p>For a while now I have been seeing random people complaining about the fact that they cannot install Windows Virtual PC on Windows 7 Home Editions (Basic or Premium).&#160; This always struck me as odd – as I was sure that this was a supported configuration – but I did not reply as I did not have the time to try this configuration myself and confirm that it did in fact work.</p>  <p>I finally had the chance to try this out – and while I can confirm that running Windows Virtual PC on Windows 7 Home Editions is supported and does work – I also stumbled upon the probable cause of peoples confusion.</p>  <p>If you go to the official Virtual PC website (<a href="http://www.microsoft.com/virtualpc">http://www.microsoft.com/virtualpc</a>) and indicate that you are running Windows 7 Home – you will be (correctly) informed that you are not eligible to run Windows XP Mode:</p>  <p><a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-41-22-metablogapi/3858.Windows7HomeVPC2_5F00_280A2F43.png" target="_blank"><img style="border-bottom: 0px;border-left: 0px;border-top: 0px;border-right: 0px" class="wlDisabledImage" border="0" alt="Windows 7 Home - VPC - 2" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-41-22-metablogapi/5123.Windows7HomeVPC2_5F00_thumb_5F00_6E871F4B.png" width="480" height="361" /></a></p>  <p>Unfortunately this page does not explain that you are eligible to run Windows Virtual PC.</p>  <p>To clarify – “Windows Virtual PC” is the virtualization program that allows you to create and run virtual machines on Windows 7.&#160; “Windows XP Mode” is a free pre-configured Windows XP virtual machine.&#160; “Windows XP Mode” is not available for people running Windows 7 Home editions; but these users can download Windows Virtual PC and use a separate (fully licensed) copy of Windows XP to create their own Windows XP virtual machines and get all the functionality of Windows XP Mode.</p>  <p>You can download Windows Virtual PC directly from here: <a title="http://www.microsoft.com/downloads/details.aspx?FamilyID=2B6D5C18-1441-47EA-8309-2545B08E11DD" href="http://www.microsoft.com/downloads/details.aspx?FamilyID=2B6D5C18-1441-47EA-8309-2545B08E11DD">http://www.microsoft.com/downloads/details.aspx?FamilyID=2B6D5C18-1441-47EA-8309-2545B08E11DD</a></p>  <p>And as you can see – on this page it does state that Windows 7 Home editions are supported:</p>  <p><a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-41-22-metablogapi/1616.Windows7HomeVPC4_5F00_2731C959.png" target="_blank"><img style="border-bottom: 0px;border-left: 0px;border-top: 0px;border-right: 0px" class="wlDisabledImage" border="0" alt="Windows 7 Home - VPC - 4" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-41-22-metablogapi/1222.Windows7HomeVPC4_5F00_thumb_5F00_0DC9C61F.png" width="476" height="357" /></a></p>  <p>Hopefully the main webpage can be updated to make this less confusing in the future.</p>  <p>Cheers,   <br />Ben    </p><div style="clear:both"></div><img src="http://blogs.msdn.com/aggbug.aspx?PostID=10035747" width="1" height="1"/>]]></description>
			<content:encoded><![CDATA[<div class="wlWriterHeaderFooter" style="float:none; margin:0px; padding:0px 0px 0px 0px;"><script type="text/javascript"> tweetmeme_url = 'http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/07/07/installing-windows-virtual-pc-on-windows-7-home-editions.aspx'; </script> <script type="text/javascript" src="http://tweetmeme.com/i/scripts/button.js"></script><br /><br /></div><p>For a while now I have been seeing random people complaining about the fact that they cannot install Windows Virtual PC on Windows 7 Home Editions (Basic or Premium).&#160; This always struck me as odd – as I was sure that this was a supported configuration – but I did not reply as I did not have the time to try this configuration myself and confirm that it did in fact work.</p>  <p>I finally had the chance to try this out – and while I can confirm that running Windows Virtual PC on Windows 7 Home Editions is supported and does work – I also stumbled upon the probable cause of peoples confusion.</p>  <p>If you go to the official Virtual PC website (<a href="http://www.microsoft.com/virtualpc">http://www.microsoft.com/virtualpc</a>) and indicate that you are running Windows 7 Home – you will be (correctly) informed that you are not eligible to run Windows XP Mode:</p>  <p><a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-41-22-metablogapi/3858.Windows7HomeVPC2_5F00_280A2F43.png" ><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" class="wlDisabledImage" title="Windows 7 Home - VPC - 2" border="0" alt="Windows 7 Home - VPC - 2" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-41-22-metablogapi/5123.Windows7HomeVPC2_5F00_thumb_5F00_6E871F4B.png" width="480" height="361" /></a></p>  <p>Unfortunately this page does not explain that you are eligible to run Windows Virtual PC.</p>  <p>To clarify – “Windows Virtual PC” is the virtualization program that allows you to create and run virtual machines on Windows 7.&#160; “Windows XP Mode” is a free pre-configured Windows XP virtual machine.&#160; “Windows XP Mode” is not available for people running Windows 7 Home editions; but these users can download Windows Virtual PC and use a separate (fully licensed) copy of Windows XP to create their own Windows XP virtual machines and get all the functionality of Windows XP Mode.</p>  <p>You can download Windows Virtual PC directly from here: <a title="http://www.microsoft.com/downloads/details.aspx?FamilyID=2B6D5C18-1441-47EA-8309-2545B08E11DD" href="http://www.microsoft.com/downloads/details.aspx?FamilyID=2B6D5C18-1441-47EA-8309-2545B08E11DD">http://www.microsoft.com/downloads/details.aspx?FamilyID=2B6D5C18-1441-47EA-8309-2545B08E11DD</a></p>  <p>And as you can see – on this page it does state that Windows 7 Home editions are supported:</p>  <p><a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-41-22-metablogapi/1616.Windows7HomeVPC4_5F00_2731C959.png" ><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" class="wlDisabledImage" title="Windows 7 Home - VPC - 4" border="0" alt="Windows 7 Home - VPC - 4" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-41-22-metablogapi/1222.Windows7HomeVPC4_5F00_thumb_5F00_0DC9C61F.png" width="476" height="357" /></a></p>  <p>Hopefully the main webpage can be updated to make this less confusing in the future.</p>  <p>Cheers,   <br />Ben    </p><div style="clear:both;"></div><img src="http://blogs.msdn.com/aggbug.aspx?PostID=10035747" width="1" height="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/07/07/installing-windows-virtual-pc-on-windows-7-home-editions.aspx/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hyper-V &amp; iSCSI &#8211; in the parent or in the virtual machine?</title>
		<link>http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/07/02/hyper-v-amp-iscsi-in-the-parent-or-in-the-virtual-machine.aspx</link>
		<comments>http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/07/02/hyper-v-amp-iscsi-in-the-parent-or-in-the-virtual-machine.aspx#comments</comments>
		<pubDate>Fri, 02 Jul 2010 21:33:12 +0000</pubDate>
		<dc:creator>Virtual PC Guy</dc:creator>
				<category><![CDATA[Hyper-V]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Windows Server 2008 R2]]></category>
		<category><![CDATA[Virtualization]]></category>

		<guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10034068</guid>
		<description><![CDATA[<div class="wlWriterHeaderFooter" style="float:none;margin:0px;padding:0px 0px 0px 0px"> tweetmeme_url = 'http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/07/02/hyper-v-amp-iscsi-in-the-parent-or-in-the-virtual-machine.aspx';  <br /><br /></div><p>Here is a good question:</p>  <blockquote>   <p>If you are using iSCSI for all of your storage needs; should you use a software iSCSI initiator inside the virtual machine to connect the iSCSI storage directly to the virtual machine, or should you connect the iSCSI storage to the management operating system (in the parent partition) and then store virtual hard disks / use pass through disks?</p> </blockquote>  <p>The answer is (as usual) not that simple.&#160; Generally speaking – you should always connect the iSCSI storage to the management operating system.&#160; The reason for this is that virtual machines can only connect to iSCSI devices with a software iSCSI initiator, where as the management operating system will be able to use hardware host-bus adapters (HBAs).</p>  <p>That said, there is a time when you will want to use a software iSCSI initiator inside the virtual machine and connect the storage directly to the virtual machine.&#160; You will want to do this if you are trying to cluster the guest operating system inside the virtual machine (as opposed to clustering Hyper-V itself).&#160; In this scenario; having iSCSI storage connected directly to the guest operating system is the only option that works.</p>  <p>Some common questions that I have heard around these recommendations include:</p>  <p>&#160;</p>  <ul>   <li>What if I am just using a software iSCSI initiator inside the management operating system?&#160; Does it really make any difference then?      <br />      <br />Yes, it still matters.&#160; At very least a software iSCSI initiator in the management operating system will be able to take full advantage of all of the network offload / acceleration technologies supported by your physical network adapter.&#160; If you run the software iSCSI initiator in the guest operating system, you will only be able to access the subset of network offload functionality that is exposed on our virtual network adapters.       <br />      <br />Furthermore, in the management operating system it is easier to utilize dedicated storage network adapters and network teaming in order to increase your performance.       <br />      <br /></li>    <li>If I connect the iSCSI storage to the management operating system, should I then pass-through the physical disks to the virtual machines – or should I use virtual hard disks (VHDs) stored on the iSCSI device?      <br />      <br />I have <a href="http://blogs.msdn.com/b/virtual_pc_guy/archive/2009/01/28/fixed-disks-vs-physical-disks.aspx" target="_blank">discussed this issue in the past</a> – and I strongly believe that everyone should default to using fixed size virtual hard disks over using physical disks directly connected to virtual machines.&#160; The only exception that I would make with iSCSI storage is if you have some external process (e.g. backup software) that will be manipulating the iSCSI storage directly and is not aware of virtual hard disks.       <br />      <br /></li>    <li>How bad is it to use iSCSI connected a software iSCSI initiator inside the virtual machine?      <br />      <br />Not that bad really.&#160; Chances are that if you are running on gigabit networking you will not really notice much of a performance difference between a software iSCSI initiator in the virtual machine and one in the management operating system.&#160; That said, a software iSCSI initiator in the virtual machine will use a lot more CPU power to achieve the same results as a hardware (or software) iSCSI initiator in the management operating system.&#160; This will eventually cause performance problems if / when your physical computer comes under high load. </li> </ul>  <p>Cheers,    <br />Ben</p><div style="clear:both"></div><img src="http://blogs.msdn.com/aggbug.aspx?PostID=10034068" width="1" height="1"/>]]></description>
			<content:encoded><![CDATA[<div class="wlWriterHeaderFooter" style="float:none; margin:0px; padding:0px 0px 0px 0px;"><script type="text/javascript"> tweetmeme_url = 'http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/07/02/hyper-v-amp-iscsi-in-the-parent-or-in-the-virtual-machine.aspx'; </script> <script type="text/javascript" src="http://tweetmeme.com/i/scripts/button.js"></script><br /><br /></div><p>Here is a good question:</p>  <blockquote>   <p>If you are using iSCSI for all of your storage needs; should you use a software iSCSI initiator inside the virtual machine to connect the iSCSI storage directly to the virtual machine, or should you connect the iSCSI storage to the management operating system (in the parent partition) and then store virtual hard disks / use pass through disks?</p> </blockquote>  <p>The answer is (as usual) not that simple.&#160; Generally speaking – you should always connect the iSCSI storage to the management operating system.&#160; The reason for this is that virtual machines can only connect to iSCSI devices with a software iSCSI initiator, where as the management operating system will be able to use hardware host-bus adapters (HBAs).</p>  <p>That said, there is a time when you will want to use a software iSCSI initiator inside the virtual machine and connect the storage directly to the virtual machine.&#160; You will want to do this if you are trying to cluster the guest operating system inside the virtual machine (as opposed to clustering Hyper-V itself).&#160; In this scenario; having iSCSI storage connected directly to the guest operating system is the only option that works.</p>  <p>Some common questions that I have heard around these recommendations include:</p>  <p>&#160;</p>  <ul>   <li>What if I am just using a software iSCSI initiator inside the management operating system?&#160; Does it really make any difference then?      <br />      <br />Yes, it still matters.&#160; At very least a software iSCSI initiator in the management operating system will be able to take full advantage of all of the network offload / acceleration technologies supported by your physical network adapter.&#160; If you run the software iSCSI initiator in the guest operating system, you will only be able to access the subset of network offload functionality that is exposed on our virtual network adapters.       <br />      <br />Furthermore, in the management operating system it is easier to utilize dedicated storage network adapters and network teaming in order to increase your performance.       <br />      <br /></li>    <li>If I connect the iSCSI storage to the management operating system, should I then pass-through the physical disks to the virtual machines – or should I use virtual hard disks (VHDs) stored on the iSCSI device?      <br />      <br />I have <a href="http://blogs.msdn.com/b/virtual_pc_guy/archive/2009/01/28/fixed-disks-vs-physical-disks.aspx" >discussed this issue in the past</a> – and I strongly believe that everyone should default to using fixed size virtual hard disks over using physical disks directly connected to virtual machines.&#160; The only exception that I would make with iSCSI storage is if you have some external process (e.g. backup software) that will be manipulating the iSCSI storage directly and is not aware of virtual hard disks.       <br />      <br /></li>    <li>How bad is it to use iSCSI connected a software iSCSI initiator inside the virtual machine?      <br />      <br />Not that bad really.&#160; Chances are that if you are running on gigabit networking you will not really notice much of a performance difference between a software iSCSI initiator in the virtual machine and one in the management operating system.&#160; That said, a software iSCSI initiator in the virtual machine will use a lot more CPU power to achieve the same results as a hardware (or software) iSCSI initiator in the management operating system.&#160; This will eventually cause performance problems if / when your physical computer comes under high load. </li> </ul>  <p>Cheers,    <br />Ben</p><div style="clear:both;"></div><img src="http://blogs.msdn.com/aggbug.aspx?PostID=10034068" width="1" height="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/07/02/hyper-v-amp-iscsi-in-the-parent-or-in-the-virtual-machine.aspx/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Talking about “Host-only KVPs”– or “How do you store random stuff in a VM configuration file” [Hyper-V Script]</title>
		<link>http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/06/28/talking-about-host-only-kvps-or-how-do-you-store-random-stuff-in-a-vm-configuration-file-hyper-v-script.aspx</link>
		<comments>http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/06/28/talking-about-host-only-kvps-or-how-do-you-store-random-stuff-in-a-vm-configuration-file-hyper-v-script.aspx#comments</comments>
		<pubDate>Tue, 29 Jun 2010 06:27:00 +0000</pubDate>
		<dc:creator>Virtual PC Guy</dc:creator>
				<category><![CDATA[Hyper-V]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Developing on Windows Virtual PC / Virtual Server / Hyper-V]]></category>
		<category><![CDATA[Virtualization]]></category>

		<guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10031959</guid>
		<description><![CDATA[<div class="wlWriterHeaderFooter" style="float:none;margin:0px;padding:0px 0px 0px 0px"> tweetmeme_url = 'http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/06/28/talking-about-host-only-kvps-or-how-do-you-store-random-stuff-in-a-vm-configuration-file-hyper-v-script.aspx';  <br /><br /></div><p>Recently I have had a couple of different people approach me with this problem:</p>  <p>They are developing software to manage / work with virtual machines – and they need a way to associate custom data with a virtual machine.&#160; The problem that they face is how to do this in a way that will survive if the virtual machine gets backed up, failed over, live migrated, snapshotted, etc…</p>  <p>Thankfully there is a simple answer.&#160; In Windows Server 2008 R2 we extended the Key-Value Pair (KVP) functionality to include the concept of “host-only” KVPs.&#160; Simply put – these are key value pairs that get stored in the virtual machine configuration file and can be written / read from the parent partition; but never get sent into the virtual machine.&#160; The way this works is that you use <a href="http://msdn.microsoft.com/en-us/library/cc160704(VS.85).aspx" target="_blank">AddKvpItems</a> to add a <a href="http://msdn.microsoft.com/en-us/library/cc136850(v=VS.85).aspx" target="_blank">Msvm_KvpExchangeDataItem</a> where the source field has been set to “4” – which indicates that this is a host-only KVP.</p>  <p>Combining this with some of my existing code from my <a href="http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/05/11/general-dvd-script-hyper-v.aspx" target="_blank">general DVD tool script</a> and my <a href="http://blogs.msdn.com/b/virtual_pc_guy/archive/2008/12/02/sending-data-from-parent-to-virtual-machine-via-kvp.aspx" target="_blank">parent KVP script</a> – results in this hand “all purpose host-only KVP script”:</p>  <div>   <div>     <pre><span style="color: #008000"># Function for handling WMI jobs / return values</span></pre>
<!--crlf-->

    <pre>Function ProcessResult($result, $successString, $failureString)</pre>
<!--crlf-->

    <pre>{</pre>
<!--crlf-->

    <pre>   <span style="color: #008000">#Return success if the return value is &#34;0&#34;</span></pre>
<!--crlf-->

    <pre>   <span style="color: #0000ff">if</span> ($result.ReturnValue <span style="color: #cc6633">-eq</span> 0)</pre>
<!--crlf-->

    <pre>      {write-host $successString} </pre>
<!--crlf-->

    <pre> </pre>
<!--crlf-->

    <pre>   <span style="color: #008000">#If the return value is not &#34;0&#34; or &#34;4096&#34; then the operation failed</span></pre>
<!--crlf-->

    <pre>   ElseIf ($result.ReturnValue <span style="color: #cc6633">-ne</span> 4096)</pre>
<!--crlf-->

    <pre>      {write-host $failureString <span style="color: #006080">&#34;  Error value:&#34;</span> $result.ReturnValue}</pre>
<!--crlf-->

    <pre> </pre>
<!--crlf-->

    <pre>   Else</pre>
<!--crlf-->

    <pre>      {<span style="color: #008000">#Get the job object</span></pre>
<!--crlf-->

    <pre>      $job=[WMI]$result.job</pre>
<!--crlf-->

    <pre> </pre>
<!--crlf-->

    <pre>      <span style="color: #008000">#Provide updates if the jobstate is &#34;3&#34; (starting) or &#34;4&#34; (running)</span></pre>
<!--crlf-->

    <pre>      <span style="color: #0000ff">while</span> ($job.JobState <span style="color: #cc6633">-eq</span> 3 -or $job.JobState <span style="color: #cc6633">-eq</span> 4)</pre>
<!--crlf-->

    <pre>         {write-host $job.PercentComplete <span style="color: #006080">&#34;% complete&#34;</span></pre>
<!--crlf-->

    <pre>          start-sleep 1</pre>
<!--crlf-->

    <pre> </pre>
<!--crlf-->

    <pre>          <span style="color: #008000">#Refresh the job object</span></pre>
<!--crlf-->

    <pre>          $job=[WMI]$result.job}</pre>
<!--crlf-->

    <pre> </pre>
<!--crlf-->

    <pre>       <span style="color: #008000">#A jobstate of &#34;7&#34; means success</span></pre>
<!--crlf-->

    <pre>       <span style="color: #0000ff">if</span> ($job.JobState <span style="color: #cc6633">-eq</span> 7)</pre>
<!--crlf-->

    <pre>          {write-host $successString}</pre>
<!--crlf-->

    <pre>       Else</pre>
<!--crlf-->

    <pre>          {write-host $failureString</pre>
<!--crlf-->

    <pre>          write-host <span style="color: #006080">&#34;ErrorCode:&#34;</span> $job.ErrorCode</pre>
<!--crlf-->

    <pre>          write-host <span style="color: #006080">&#34;ErrorDescription&#34;</span> $job.ErrorDescription}</pre>
<!--crlf-->

    <pre>       }</pre>
<!--crlf-->

    <pre>}</pre>
<!--crlf-->

    <pre>&#160;</pre>
<!--crlf-->

    <pre><span style="color: #008000"># Filter for parsing XML data</span></pre>
<!--crlf-->

    <pre><span style="color: #0000ff">filter</span> Import-CimXml </pre>
<!--crlf-->

    <pre>{ </pre>
<!--crlf-->

    <pre>   <span style="color: #008000"># Create new XML object from input</span></pre>
<!--crlf-->

    <pre>   $CimXml = [Xml]$_ </pre>
<!--crlf-->

    <pre>   $CimObj = New-Object -TypeName System.Object </pre>
<!--crlf-->

    <pre> </pre>
<!--crlf-->

    <pre>   <span style="color: #008000"># Iterate over the data and pull out just the value name and data for each entry</span></pre>
<!--crlf-->

    <pre>   <span style="color: #0000ff">foreach</span> ($CimProperty <span style="color: #0000ff">in</span> $CimXml.SelectNodes(<span style="color: #006080">&#34;/INSTANCE/PROPERTY[@NAME='Name']&#34;</span>)) </pre>
<!--crlf-->

    <pre>      { </pre>
<!--crlf-->

    <pre>         $CimObj &#124; Add-Member -MemberType NoteProperty -Name $CimProperty.NAME -Value $CimProperty.VALUE </pre>
<!--crlf-->

    <pre>      } </pre>
<!--crlf-->

    <pre> </pre>
<!--crlf-->

    <pre>   <span style="color: #0000ff">foreach</span> ($CimProperty <span style="color: #0000ff">in</span> $CimXml.SelectNodes(<span style="color: #006080">&#34;/INSTANCE/PROPERTY[@NAME='Data']&#34;</span>)) </pre>
<!--crlf-->

    <pre>      { </pre>
<!--crlf-->

    <pre>         $CimObj &#124; Add-Member -MemberType NoteProperty -Name $CimProperty.NAME -Value $CimProperty.VALUE </pre>
<!--crlf-->

    <pre>      } </pre>
<!--crlf-->

    <pre> </pre>
<!--crlf-->

    <pre>   <span style="color: #008000"># Display output</span></pre>
<!--crlf-->

    <pre>   $CimObj </pre>
<!--crlf-->

    <pre>} </pre>
<!--crlf-->

    <pre>&#160;</pre>
<!--crlf-->

    <pre><span style="color: #008000"># Prompt for the Hyper-V Server to use</span></pre>
<!--crlf-->

    <pre>$HyperVServer = Read-Host <span style="color: #006080">&#34;Specify the Hyper-V Server to use (enter '.' for the local computer)&#34;</span></pre>
<!--crlf-->

    <pre>&#160;</pre>
<!--crlf-->

    <pre><span style="color: #008000"># Prompt for the virtual machine to use</span></pre>
<!--crlf-->

    <pre>$VMName = Read-Host <span style="color: #006080">&#34;Specify the name of the virtual machine&#34;</span></pre>
<!--crlf-->

    <pre>&#160;</pre>
<!--crlf-->

    <pre><span style="color: #008000"># Get the management service</span></pre>
<!--crlf-->

    <pre>$VMMS = gwmi Msvm_VirtualSystemManagementService -namespace root\virtualization -computername $HyperVServer</pre>
<!--crlf-->

    <pre>&#160;</pre>
<!--crlf-->

    <pre><span style="color: #008000"># Get the virtual machine object</span></pre>
<!--crlf-->

    <pre>$VM = gwmi MSVM_ComputerSystem -namespace root\virtualization -computername $HyperVServer &#124; where {$_.ElementName <span style="color: #cc6633">-eq</span> $VMName} </pre>
<!--crlf-->

    <pre>&#160;</pre>
<!--crlf-->

    <pre><span style="color: #008000"># Get the virtual machine setting data</span></pre>
<!--crlf-->

    <pre>$VSSD = $VM.getRelated(<span style="color: #006080">&#34;Msvm_VirtualSystemSettingData&#34;</span>) &#124; where {$_.SettingType <span style="color: #cc6633">-eq</span> 3}</pre>
<!--crlf-->

    <pre>&#160;</pre>
<!--crlf-->

    <pre><span style="color: #008000"># Setup parameters for main menu prompt</span></pre>
<!--crlf-->

    <pre>$message = <span style="color: #006080">&#34;What do you want to do with host-only KVPs?&#34;</span></pre>
<!--crlf-->

    <pre>$list = New-Object System.Management.Automation.Host.ChoiceDescription <span style="color: #006080">&#34;&#38;List&#34;</span>, <span style="color: #006080">&#34;List the current host-only KVPs.&#34;</span></pre>
<!--crlf-->

    <pre>$add = New-Object System.Management.Automation.Host.ChoiceDescription <span style="color: #006080">&#34;&#38;Add&#34;</span>, <span style="color: #006080">&#34;Add a new host-only KVP / update an existing one.&#34;</span></pre>
<!--crlf-->

    <pre>$delete = New-Object System.Management.Automation.Host.ChoiceDescription <span style="color: #006080">&#34;&#38;Delete&#34;</span>, <span style="color: #006080">&#34;Delete a host-only KVP.&#34;</span></pre>
<!--crlf-->

    <pre>$quit = New-Object System.Management.Automation.Host.ChoiceDescription <span style="color: #006080">&#34;&#38;Quit&#34;</span>, <span style="color: #006080">&#34;Exit the HostKVPTools script.&#34;</span></pre>
<!--crlf-->

    <pre>$options = [System.Management.Automation.Host.ChoiceDescription[]]($list, $add, $delete, $quit)</pre>
<!--crlf-->

    <pre>&#160;</pre>
<!--crlf-->

    <pre>do </pre>
<!--crlf-->

    <pre>   {</pre>
<!--crlf-->

    <pre>   </pre>
<!--crlf-->

    <pre>   <span style="color: #008000"># Setting up $KVPSettingData needs to be done inside the loop - as this value needs to be</span></pre>
<!--crlf-->

    <pre>   <span style="color: #008000"># refreshed after any add / modify / delete operation</span></pre>
<!--crlf-->

    <pre>   </pre>
<!--crlf-->

    <pre>   <span style="color: #008000"># Get KVP settings object</span></pre>
<!--crlf-->

    <pre>   $Query = <span style="color: #006080">&#34;Associators of {$VSSD} Where ResultClass=Msvm_KvpExchangeComponentSettingData&#34;</span></pre>
<!--crlf-->

    <pre>   $KvpSettingData = gwmi -Query $Query -namespace root\virtualization -computername $HyperVServer </pre>
<!--crlf-->

    <pre>   </pre>
<!--crlf-->

    <pre>   <span style="color: #008000"># Ask the user what they want to do with the host-only KVPs</span></pre>
<!--crlf-->

    <pre>   write-host</pre>
<!--crlf-->

    <pre>   $promptResult = $host.ui.PromptForChoice(<span style="color: #006080">&#34;&#34;</span>, $message, $options, 0)</pre>
<!--crlf-->

    <pre>   write-host </pre>
<!--crlf-->

    <pre>&#160;</pre>
<!--crlf-->

    <pre>   <span style="color: #0000ff">switch</span> ($promptResult)</pre>
<!--crlf-->

    <pre>      {</pre>
<!--crlf-->

    <pre>         0  {<span style="color: #008000"># Display existing host-only KVPs</span></pre>
<!--crlf-->

    <pre>                $KvpSettingData.HostOnlyItems &#124; Import-CimXml </pre>
<!--crlf-->

    <pre>             }</pre>
<!--crlf-->

    <pre>     </pre>
<!--crlf-->

    <pre>         1 {<span style="color: #008000"># Add a new host-only KVP / update an existing host-only KVP</span></pre>
<!--crlf-->

    <pre>         </pre>
<!--crlf-->

    <pre>                <span style="color: #008000"># Prompt for the name for the new KVP</span></pre>
<!--crlf-->

    <pre>                $NewKVPName = Read-Host <span style="color: #006080">&#34;Specify the name of the KVP to add / update&#34;</span></pre>
<!--crlf-->

    <pre>&#160;</pre>
<!--crlf-->

    <pre>                <span style="color: #008000"># Prompt for the KVP data</span></pre>
<!--crlf-->

    <pre>                $NewKVPData = Read-Host <span style="color: #006080">&#34;Specify the data for the KVP&#34;</span></pre>
<!--crlf-->

    <pre>         </pre>
<!--crlf-->

    <pre>                <span style="color: #008000"># Create new Msvm_KvpExchangeDataItem object</span></pre>
<!--crlf-->

    <pre>                $wmiClassString = <span style="color: #006080">&#34;\\&#34; + $HyperVServer + &#34;</span>\root\virtualization:Msvm_KvpExchangeDataItem<span style="color: #006080">&#34;</span></pre>
<!--crlf-->

    <pre>                $newKvpExchangeDataItem = ([WMIClass]$wmiClassString).CreateInstance()</pre>
<!--crlf-->

    <pre> </pre>
<!--crlf-->

    <pre>                # Populate the KVP data item - a source of &#34;4<span style="color: #006080">&#34; indicates that it is &#34;</span>host-only<span style="color: #006080">&#34;</span></pre>
<!--crlf-->

    <pre>                $newKvpExchangeDataItem.Name = $NewKVPName</pre>
<!--crlf-->

    <pre>                $newKvpExchangeDataItem.Data = $NewKVPData</pre>
<!--crlf-->

    <pre>                $newKvpExchangeDataItem.Source = 4</pre>
<!--crlf-->

    <pre> </pre>
<!--crlf-->

    <pre>                # Check to see if we can find the key</pre>
<!--crlf-->

    <pre>                $matchingString = '&#60;PROPERTY NAME=&#34;Name<span style="color: #006080">&#34; TYPE=&#34;</span>string<span style="color: #006080">&#34;&#62;&#60;VALUE&#62;' + $NewKVPName</span></pre>
<!--crlf-->

    <pre>                $existingKVP = $KvpSettingData.HostOnlyItems &#124; ? {$_ -match $matchingString}</pre>
<!--crlf-->

    <pre>                </pre>
<!--crlf-->

    <pre>                # If the key exists - modify it.  If not, create it.</pre>
<!--crlf-->

    <pre>                if ($existingKVP) </pre>
<!--crlf-->

    <pre>                    {$result = $VMMS.ModifyKvpItems($Vm, $newKvpExchangeDataItem.GetText(1))}</pre>
<!--crlf-->

    <pre>                else {$result = $VMMS.AddKvpItems($Vm, $newKvpExchangeDataItem.GetText(1))}</pre>
<!--crlf-->

    <pre> </pre>
<!--crlf-->

    <pre>                # Handle the results                </pre>
<!--crlf-->

    <pre>                ProcessResult $result &#34;The host-only KVP has been added.<span style="color: #006080">&#34; &#34;</span>Failed to add host-only KVP.<span style="color: #006080">&#34;</span></pre>
<!--crlf-->

    <pre>            }</pre>
<!--crlf-->

    <pre>           </pre>
<!--crlf-->

    <pre>         2 {# Delete an existing host-only KVP</pre>
<!--crlf-->

    <pre>           </pre>
<!--crlf-->

    <pre>                # Prompt for the name for the KVP to delete</pre>
<!--crlf-->

    <pre>                $KVPName = Read-Host &#34;Specify the name of the KVP to delete<span style="color: #006080">&#34;</span></pre>
<!--crlf-->

    <pre>                </pre>
<!--crlf-->

    <pre>                # Check to see if we can find the key</pre>
<!--crlf-->

    <pre>                $matchingString = '&#60;PROPERTY NAME=&#34;Name<span style="color: #006080">&#34; TYPE=&#34;</span>string<span style="color: #006080">&#34;&#62;&#60;VALUE&#62;' + $KVPName</span></pre>
<!--crlf-->

    <pre>                $existingKVP = $KvpSettingData.HostOnlyItems &#124; ? {$_ -match $matchingString}</pre>
<!--crlf-->

    <pre>                </pre>
<!--crlf-->

    <pre>                # If the key exists - remove it.</pre>
<!--crlf-->

    <pre>                if ($existingKVP) </pre>
<!--crlf-->

    <pre>                    {$result = $VMMS.RemoveKvpItems($Vm, $existingKVP)</pre>
<!--crlf-->

    <pre>                     ProcessResult $result &#34;The host-only KVP has been deleted.<span style="color: #006080">&#34; &#34;</span>Failed to delete host-only KVP.<span style="color: #006080">&#34;}</span></pre>
<!--crlf-->

    <pre>                else {write-host &#34;No host-only KVP exists with that name&#34;}</pre>
<!--crlf-->

    <pre>&#160;</pre>
<!--crlf-->

    <pre>            }</pre>
<!--crlf-->

    <pre>           </pre>
<!--crlf-->

    <pre>&#160;</pre>
<!--crlf-->

    <pre>       }</pre>
<!--crlf-->

    <pre>   }</pre>
<!--crlf-->

    <pre>   </pre>
<!--crlf-->

    <pre>until ($promptResult <span style="color: #cc6633">-eq</span> 3)</pre>
<!--crlf--></div>
</div>

<p>Cheers, 
  <br />Ben</p><div style="clear:both"></div><img src="http://blogs.msdn.com/aggbug.aspx?PostID=10031959" width="1" height="1"/>]]></description>
			<content:encoded><![CDATA[<div class="wlWriterHeaderFooter" style="float:none; margin:0px; padding:0px 0px 0px 0px;"><script type="text/javascript"> tweetmeme_url = 'http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/06/28/talking-about-host-only-kvps-or-how-do-you-store-random-stuff-in-a-vm-configuration-file-hyper-v-script.aspx'; </script> <script type="text/javascript" src="http://tweetmeme.com/i/scripts/button.js"></script><br /><br /></div><p>Recently I have had a couple of different people approach me with this problem:</p>  <p>They are developing software to manage / work with virtual machines – and they need a way to associate custom data with a virtual machine.&#160; The problem that they face is how to do this in a way that will survive if the virtual machine gets backed up, failed over, live migrated, snapshotted, etc…</p>  <p>Thankfully there is a simple answer.&#160; In Windows Server 2008 R2 we extended the Key-Value Pair (KVP) functionality to include the concept of “host-only” KVPs.&#160; Simply put – these are key value pairs that get stored in the virtual machine configuration file and can be written / read from the parent partition; but never get sent into the virtual machine.&#160; The way this works is that you use <a href="http://msdn.microsoft.com/en-us/library/cc160704(VS.85).aspx" >AddKvpItems</a> to add a <a href="http://msdn.microsoft.com/en-us/library/cc136850(v=VS.85).aspx" >Msvm_KvpExchangeDataItem</a> where the source field has been set to “4” – which indicates that this is a host-only KVP.</p>  <p>Combining this with some of my existing code from my <a href="http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/05/11/general-dvd-script-hyper-v.aspx" >general DVD tool script</a> and my <a href="http://blogs.msdn.com/b/virtual_pc_guy/archive/2008/12/02/sending-data-from-parent-to-virtual-machine-via-kvp.aspx" >parent KVP script</a> – results in this hand “all purpose host-only KVP script”:</p>  <div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; max-height: 20000px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper">   <div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet">     <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #008000"># Function for handling WMI jobs / return values</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">Function ProcessResult($result, $successString, $failureString)</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">{</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">   <span style="color: #008000">#Return success if the return value is &quot;0&quot;</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">   <span style="color: #0000ff">if</span> ($result.ReturnValue <span style="color: #cc6633">-eq</span> 0)</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">      {write-host $successString} </pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"> </pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">   <span style="color: #008000">#If the return value is not &quot;0&quot; or &quot;4096&quot; then the operation failed</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">   ElseIf ($result.ReturnValue <span style="color: #cc6633">-ne</span> 4096)</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">      {write-host $failureString <span style="color: #006080">&quot;  Error value:&quot;</span> $result.ReturnValue}</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"> </pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">   Else</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">      {<span style="color: #008000">#Get the job object</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">      $job=[WMI]$result.job</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"> </pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">      <span style="color: #008000">#Provide updates if the jobstate is &quot;3&quot; (starting) or &quot;4&quot; (running)</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">      <span style="color: #0000ff">while</span> ($job.JobState <span style="color: #cc6633">-eq</span> 3 -or $job.JobState <span style="color: #cc6633">-eq</span> 4)</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">         {write-host $job.PercentComplete <span style="color: #006080">&quot;% complete&quot;</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">          start-sleep 1</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"> </pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">          <span style="color: #008000">#Refresh the job object</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">          $job=[WMI]$result.job}</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"> </pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">       <span style="color: #008000">#A jobstate of &quot;7&quot; means success</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">       <span style="color: #0000ff">if</span> ($job.JobState <span style="color: #cc6633">-eq</span> 7)</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">          {write-host $successString}</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">       Else</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">          {write-host $failureString</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">          write-host <span style="color: #006080">&quot;ErrorCode:&quot;</span> $job.ErrorCode</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">          write-host <span style="color: #006080">&quot;ErrorDescription&quot;</span> $job.ErrorDescription}</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">       }</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">}</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">&#160;</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #008000"># Filter for parsing XML data</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #0000ff">filter</span> Import-CimXml </pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">{ </pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">   <span style="color: #008000"># Create new XML object from input</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">   $CimXml = [Xml]$_ </pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">   $CimObj = New-Object -TypeName System.Object </pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"> </pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">   <span style="color: #008000"># Iterate over the data and pull out just the value name and data for each entry</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">   <span style="color: #0000ff">foreach</span> ($CimProperty <span style="color: #0000ff">in</span> $CimXml.SelectNodes(<span style="color: #006080">&quot;/INSTANCE/PROPERTY[@NAME='Name']&quot;</span>)) </pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">      { </pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">         $CimObj | Add-Member -MemberType NoteProperty -Name $CimProperty.NAME -Value $CimProperty.VALUE </pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">      } </pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"> </pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">   <span style="color: #0000ff">foreach</span> ($CimProperty <span style="color: #0000ff">in</span> $CimXml.SelectNodes(<span style="color: #006080">&quot;/INSTANCE/PROPERTY[@NAME='Data']&quot;</span>)) </pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">      { </pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">         $CimObj | Add-Member -MemberType NoteProperty -Name $CimProperty.NAME -Value $CimProperty.VALUE </pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">      } </pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"> </pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">   <span style="color: #008000"># Display output</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">   $CimObj </pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">} </pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">&#160;</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #008000"># Prompt for the Hyper-V Server to use</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">$HyperVServer = Read-Host <span style="color: #006080">&quot;Specify the Hyper-V Server to use (enter '.' for the local computer)&quot;</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">&#160;</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #008000"># Prompt for the virtual machine to use</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">$VMName = Read-Host <span style="color: #006080">&quot;Specify the name of the virtual machine&quot;</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">&#160;</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #008000"># Get the management service</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">$VMMS = gwmi Msvm_VirtualSystemManagementService -namespace root\virtualization -computername $HyperVServer</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">&#160;</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #008000"># Get the virtual machine object</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">$VM = gwmi MSVM_ComputerSystem -namespace root\virtualization -computername $HyperVServer | where {$_.ElementName <span style="color: #cc6633">-eq</span> $VMName} </pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">&#160;</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #008000"># Get the virtual machine setting data</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">$VSSD = $VM.getRelated(<span style="color: #006080">&quot;Msvm_VirtualSystemSettingData&quot;</span>) | where {$_.SettingType <span style="color: #cc6633">-eq</span> 3}</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">&#160;</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #008000"># Setup parameters for main menu prompt</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">$message = <span style="color: #006080">&quot;What do you want to do with host-only KVPs?&quot;</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">$list = New-Object System.Management.Automation.Host.ChoiceDescription <span style="color: #006080">&quot;&amp;List&quot;</span>, <span style="color: #006080">&quot;List the current host-only KVPs.&quot;</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">$add = New-Object System.Management.Automation.Host.ChoiceDescription <span style="color: #006080">&quot;&amp;Add&quot;</span>, <span style="color: #006080">&quot;Add a new host-only KVP / update an existing one.&quot;</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">$delete = New-Object System.Management.Automation.Host.ChoiceDescription <span style="color: #006080">&quot;&amp;Delete&quot;</span>, <span style="color: #006080">&quot;Delete a host-only KVP.&quot;</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">$quit = New-Object System.Management.Automation.Host.ChoiceDescription <span style="color: #006080">&quot;&amp;Quit&quot;</span>, <span style="color: #006080">&quot;Exit the HostKVPTools script.&quot;</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">$options = [System.Management.Automation.Host.ChoiceDescription[]]($list, $add, $delete, $quit)</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">&#160;</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">do </pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">   {</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">   </pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">   <span style="color: #008000"># Setting up $KVPSettingData needs to be done inside the loop - as this value needs to be</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">   <span style="color: #008000"># refreshed after any add / modify / delete operation</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">   </pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">   <span style="color: #008000"># Get KVP settings object</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">   $Query = <span style="color: #006080">&quot;Associators of {$VSSD} Where ResultClass=Msvm_KvpExchangeComponentSettingData&quot;</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">   $KvpSettingData = gwmi -Query $Query -namespace root\virtualization -computername $HyperVServer </pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">   </pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">   <span style="color: #008000"># Ask the user what they want to do with the host-only KVPs</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">   write-host</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">   $promptResult = $host.ui.PromptForChoice(<span style="color: #006080">&quot;&quot;</span>, $message, $options, 0)</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">   write-host </pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">&#160;</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">   <span style="color: #0000ff">switch</span> ($promptResult)</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">      {</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">         0  {<span style="color: #008000"># Display existing host-only KVPs</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">                $KvpSettingData.HostOnlyItems | Import-CimXml </pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">             }</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">     </pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">         1 {<span style="color: #008000"># Add a new host-only KVP / update an existing host-only KVP</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">         </pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">                <span style="color: #008000"># Prompt for the name for the new KVP</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">                $NewKVPName = Read-Host <span style="color: #006080">&quot;Specify the name of the KVP to add / update&quot;</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">&#160;</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">                <span style="color: #008000"># Prompt for the KVP data</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">                $NewKVPData = Read-Host <span style="color: #006080">&quot;Specify the data for the KVP&quot;</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">         </pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">                <span style="color: #008000"># Create new Msvm_KvpExchangeDataItem object</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">                $wmiClassString = <span style="color: #006080">&quot;\\&quot; + $HyperVServer + &quot;</span>\root\virtualization:Msvm_KvpExchangeDataItem<span style="color: #006080">&quot;</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">                $newKvpExchangeDataItem = ([WMIClass]$wmiClassString).CreateInstance()</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"> </pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">                # Populate the KVP data item - a source of &quot;4<span style="color: #006080">&quot; indicates that it is &quot;</span>host-only<span style="color: #006080">&quot;</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">                $newKvpExchangeDataItem.Name = $NewKVPName</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">                $newKvpExchangeDataItem.Data = $NewKVPData</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">                $newKvpExchangeDataItem.Source = 4</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"> </pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">                # Check to see if we can find the key</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">                $matchingString = '&lt;PROPERTY NAME=&quot;Name<span style="color: #006080">&quot; TYPE=&quot;</span>string<span style="color: #006080">&quot;&gt;&lt;VALUE&gt;' + $NewKVPName</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">                $existingKVP = $KvpSettingData.HostOnlyItems | ? {$_ -match $matchingString}</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">                </pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">                # If the key exists - modify it.  If not, create it.</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">                if ($existingKVP) </pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">                    {$result = $VMMS.ModifyKvpItems($Vm, $newKvpExchangeDataItem.GetText(1))}</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">                else {$result = $VMMS.AddKvpItems($Vm, $newKvpExchangeDataItem.GetText(1))}</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"> </pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">                # Handle the results                </pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">                ProcessResult $result &quot;The host-only KVP has been added.<span style="color: #006080">&quot; &quot;</span>Failed to add host-only KVP.<span style="color: #006080">&quot;</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">            }</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">           </pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">         2 {# Delete an existing host-only KVP</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">           </pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">                # Prompt for the name for the KVP to delete</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">                $KVPName = Read-Host &quot;Specify the name of the KVP to delete<span style="color: #006080">&quot;</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">                </pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">                # Check to see if we can find the key</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">                $matchingString = '&lt;PROPERTY NAME=&quot;Name<span style="color: #006080">&quot; TYPE=&quot;</span>string<span style="color: #006080">&quot;&gt;&lt;VALUE&gt;' + $KVPName</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">                $existingKVP = $KvpSettingData.HostOnlyItems | ? {$_ -match $matchingString}</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">                </pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">                # If the key exists - remove it.</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">                if ($existingKVP) </pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">                    {$result = $VMMS.RemoveKvpItems($Vm, $existingKVP)</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">                     ProcessResult $result &quot;The host-only KVP has been deleted.<span style="color: #006080">&quot; &quot;</span>Failed to delete host-only KVP.<span style="color: #006080">&quot;}</span></pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">                else {write-host &quot;No host-only KVP exists with that name&quot;}</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">&#160;</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">            }</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">           </pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">&#160;</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">       }</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">   }</pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">   </pre>
<!--crlf-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">until ($promptResult <span style="color: #cc6633">-eq</span> 3)</pre>
<!--crlf--></div>
</div>

<p>Cheers, 
  <br />Ben</p><div style="clear:both;"></div><img src="http://blogs.msdn.com/aggbug.aspx?PostID=10031959" width="1" height="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/06/28/talking-about-host-only-kvps-or-how-do-you-store-random-stuff-in-a-vm-configuration-file-hyper-v-script.aspx/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Components-PostAttachments/00-10-03-19-59/HostKVPTool.zip" length="2556" type="application/x-zip-compressed" />
		</item>
		<item>
		<title>Increased number of virtual machines supported in a cluster [Hyper-V R2]</title>
		<link>http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/06/17/increased-number-of-virtual-machines-supported-in-a-cluster-hyper-v-r2.aspx</link>
		<comments>http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/06/17/increased-number-of-virtual-machines-supported-in-a-cluster-hyper-v-r2.aspx#comments</comments>
		<pubDate>Fri, 18 Jun 2010 00:03:56 +0000</pubDate>
		<dc:creator>Virtual PC Guy</dc:creator>
				<category><![CDATA[Hyper-V]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Windows Server 2008 R2]]></category>
		<category><![CDATA[Virtualization]]></category>

		<guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10026774</guid>
		<description><![CDATA[<div class="wlWriterHeaderFooter" style="float:none;margin:0px;padding:0px 0px 0px 0px"> tweetmeme_url = 'http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/06/17/increased-number-of-virtual-machines-supported-in-a-cluster-hyper-v-r2.aspx';  <br /><br /></div><p>When we released Windows Server 2008 R2 we stated that we would support up to 384 virtual machines running on a single instance of Hyper-V – but only up to 64 virtual machines running on a node of a cluster.</p>  <p>Last week we announced that we now support up to 384 virtual machines running on a node of a cluster – as long as the total number of running virtual machines in the cluster does not exceed 1000.</p>  <p>You can read more about this on the “Requirements and Limits” page on TechNet: <a title="http://technet.microsoft.com/en-us/library/ee405267(WS.10).aspx" href="http://technet.microsoft.com/en-us/library/ee405267(WS.10).aspx">http://technet.microsoft.com/en-us/library/ee405267(WS.10).aspx</a></p>  <p>Cheers,   <br />Ben</p><div style="clear:both"></div><img src="http://blogs.msdn.com/aggbug.aspx?PostID=10026774" width="1" height="1"/>]]></description>
			<content:encoded><![CDATA[<div class="wlWriterHeaderFooter" style="float:none; margin:0px; padding:0px 0px 0px 0px;"><script type="text/javascript"> tweetmeme_url = 'http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/06/17/increased-number-of-virtual-machines-supported-in-a-cluster-hyper-v-r2.aspx'; </script> <script type="text/javascript" src="http://tweetmeme.com/i/scripts/button.js"></script><br /><br /></div><p>When we released Windows Server 2008 R2 we stated that we would support up to 384 virtual machines running on a single instance of Hyper-V – but only up to 64 virtual machines running on a node of a cluster.</p>  <p>Last week we announced that we now support up to 384 virtual machines running on a node of a cluster – as long as the total number of running virtual machines in the cluster does not exceed 1000.</p>  <p>You can read more about this on the “Requirements and Limits” page on TechNet: <a title="http://technet.microsoft.com/en-us/library/ee405267(WS.10).aspx" href="http://technet.microsoft.com/en-us/library/ee405267(WS.10).aspx">http://technet.microsoft.com/en-us/library/ee405267(WS.10).aspx</a></p>  <p>Cheers,   <br />Ben</p><div style="clear:both;"></div><img src="http://blogs.msdn.com/aggbug.aspx?PostID=10026774" width="1" height="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/06/17/increased-number-of-virtual-machines-supported-in-a-cluster-hyper-v-r2.aspx/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hotfix: Hyper-V backup can cause slow system boot / large registry files</title>
		<link>http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/06/14/hotfix-hyper-v-backup-can-cause-slow-system-boot-large-registry-files.aspx</link>
		<comments>http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/06/14/hotfix-hyper-v-backup-can-cause-slow-system-boot-large-registry-files.aspx#comments</comments>
		<pubDate>Tue, 15 Jun 2010 05:05:17 +0000</pubDate>
		<dc:creator>Virtual PC Guy</dc:creator>
				<category><![CDATA[Hyper-V]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Windows Server 2008 R2]]></category>
		<category><![CDATA[Virtualization]]></category>

		<guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10025002</guid>
		<description><![CDATA[<div class="wlWriterHeaderFooter" style="float:none;margin:0px;padding:0px 0px 0px 0px"> tweetmeme_url = 'http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/06/14/hotfix-hyper-v-backup-can-cause-slow-system-boot-large-registry-files.aspx';  <br /><br /></div><p>A while ago I made an <a href="http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/03/10/adventures-in-backup-continued.aspx" target="_blank">open offer to people to contact me if they had experienced issues using Hyper-V backup</a>.&#160; A number of you contacted me with reports of large registry files in the parent partition – that would slow down system boot over time.</p>  <p>Well, after a lot of investigation we have figured out the cause and a hotfix is now available.&#160; You can download it from here:</p>  <p><a href="http://support.microsoft.com/kb/982210">http://support.microsoft.com/kb/982210</a></p>  <p>I recommend that if you are using backup regularly on Hyper-V that you install this hotfix.</p>  <p>Note – that despite the title of the KB article, this fix applies to Windows Server 2008 R2 (not Windows Server 2008).</p>  <p>So what was the cause of the problem?</p>  <p>A short description is as follows:</p>  <p>Whenever we backup a virtual machine using VSS, we momentarily connect the backup copy of the virtual machines virtual hard disks to the parent partition in order to clean them up after backup.&#160; Unfortunately with Windows Server 2008 R2 a new plug-and-play entry would get created in the Windows registry each time that we did this.&#160; Over time this would cause the registry to get larger and larger, which would in turn slow down the Windows boot process.</p>  <p>Cheers,   <br />Ben</p><div style="clear:both"></div><img src="http://blogs.msdn.com/aggbug.aspx?PostID=10025002" width="1" height="1"/>]]></description>
			<content:encoded><![CDATA[<div class="wlWriterHeaderFooter" style="float:none; margin:0px; padding:0px 0px 0px 0px;"><script type="text/javascript"> tweetmeme_url = 'http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/06/14/hotfix-hyper-v-backup-can-cause-slow-system-boot-large-registry-files.aspx'; </script> <script type="text/javascript" src="http://tweetmeme.com/i/scripts/button.js"></script><br /><br /></div><p>A while ago I made an <a href="http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/03/10/adventures-in-backup-continued.aspx" >open offer to people to contact me if they had experienced issues using Hyper-V backup</a>.&#160; A number of you contacted me with reports of large registry files in the parent partition – that would slow down system boot over time.</p>  <p>Well, after a lot of investigation we have figured out the cause and a hotfix is now available.&#160; You can download it from here:</p>  <p><a href="http://support.microsoft.com/kb/982210">http://support.microsoft.com/kb/982210</a></p>  <p>I recommend that if you are using backup regularly on Hyper-V that you install this hotfix.</p>  <p>Note – that despite the title of the KB article, this fix applies to Windows Server 2008 R2 (not Windows Server 2008).</p>  <p>So what was the cause of the problem?</p>  <p>A short description is as follows:</p>  <p>Whenever we backup a virtual machine using VSS, we momentarily connect the backup copy of the virtual machines virtual hard disks to the parent partition in order to clean them up after backup.&#160; Unfortunately with Windows Server 2008 R2 a new plug-and-play entry would get created in the Windows registry each time that we did this.&#160; Over time this would cause the registry to get larger and larger, which would in turn slow down the Windows boot process.</p>  <p>Cheers,   <br />Ben</p><div style="clear:both;"></div><img src="http://blogs.msdn.com/aggbug.aspx?PostID=10025002" width="1" height="1"/>]]></content:encoded>
			<wfw:commentRss>http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/06/14/hotfix-hyper-v-backup-can-cause-slow-system-boot-large-registry-files.aspx/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
