<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.technet.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Windows Virtualization Team Blog : WMI, virtualization</title><link>http://blogs.technet.com/virtualization/archive/tags/WMI/virtualization/default.aspx</link><description>Tags: WMI, virtualization</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Hyper-V WMI – Cloning Virtual Machines Using Import/Export</title><link>http://blogs.technet.com/virtualization/archive/2008/06/07/hyper-v-wmi-cloning-virtual-machines-using-import-export.aspx</link><pubDate>Sun, 08 Jun 2008 00:38:55 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3067493</guid><dc:creator>Taylorb</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.technet.com/virtualization/comments/3067493.aspx</comments><wfw:commentRss>http://blogs.technet.com/virtualization/commentrss.aspx?PostID=3067493</wfw:commentRss><description>&lt;p&gt;I have officially given up on the “Hyper-V WMI Using PowerShell Scripts” serious, not because of lack of interest but because or extreme interest implying that I would need to do Part 5, 6, 7, 99…&amp;#160; Counting past 5 is hard so from now on I will just title the posts for what they are doing.&amp;#160; Today’s post is going to be an end-to-end script to create 10 clones of a given VM.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Here’s a quick tour of the script…&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;This script takes 4 parameters:    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; MasterVM – this is the name of the VM that will be cloned     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Path – this is the base path where the clones will reside     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; NewName – this is what the cloned VM’s will be named     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; HyperVHost – this is the name of the host that the script will execute against&lt;/p&gt;  &lt;p&gt;The function ProcessWMIJob takes the return of a WMI method call and then processes the job waiting for the job to complete&amp;#160; and throwing an exception if the job failed.&lt;/p&gt;  &lt;p&gt;The main part of the script retrieves the Msvm_VirtualSystemManagmentService class and the MasterVM’s Msvm_ComputerSystem.&amp;#160; It then loops 10 times, first changing the name of the VM and then exporting the VM and finally re-importing the VM.&amp;#160; After it completes the 10 interactions it restores the name of original name of the MasterVM.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color: #0000ff"&gt;param&lt;/span&gt;&lt;span style="color: #000000"&gt;      &lt;br /&gt;(       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; [&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;]&lt;/span&gt;&lt;span style="color: #800080"&gt;$MasterVM&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #000000"&gt;$&lt;/span&gt;&lt;span style="color: #000000"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;Throw&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;MasterVM required&amp;quot;&lt;/span&gt;&lt;span style="color: #000000"&gt;)&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #000000"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; [&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;]&lt;/span&gt;&lt;span style="color: #800080"&gt;$Path&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #000000"&gt;$&lt;/span&gt;&lt;span style="color: #000000"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;Throw&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;Path required&amp;quot;&lt;/span&gt;&lt;span style="color: #000000"&gt;)&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #000000"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; [&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;]&lt;/span&gt;&lt;span style="color: #800080"&gt;$NewName&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;VMCopy&amp;quot;&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #000000"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; [&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;]&lt;/span&gt;&lt;span style="color: #800080"&gt;$HyperVHost&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;localhost&amp;quot;&lt;/span&gt;&lt;span style="color: #000000"&gt;      &lt;br /&gt;)       &lt;br /&gt;      &lt;br /&gt;      &lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;function&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #0000cd"&gt;ProcessWMIJob      &lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;{      &lt;br /&gt;&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;param&lt;/span&gt;&lt;span style="color: #000000"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; (       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [&lt;/span&gt;&lt;span style="color: #8b4513"&gt;System.Management.ManagementBaseObject&lt;/span&gt;&lt;span style="color: #000000"&gt;]&lt;/span&gt;&lt;span style="color: #800080"&gt;$Result&lt;/span&gt;&lt;span style="color: #000000"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; )       &lt;br /&gt;      &lt;br /&gt;&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt; (&lt;/span&gt;&lt;span style="color: #800080"&gt;$Result&lt;/span&gt;&lt;span style="color: #000000"&gt;.&lt;/span&gt;&lt;span style="color: #8b4513"&gt;ReturnValue&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;-eq&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #000000"&gt;4096&lt;/span&gt;&lt;span style="color: #000000"&gt;)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #800080"&gt;$Job&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; [&lt;/span&gt;&lt;span style="color: #0000ff"&gt;WMI&lt;/span&gt;&lt;span style="color: #000000"&gt;]&lt;/span&gt;&lt;span style="color: #800080"&gt;$Result&lt;/span&gt;&lt;span style="color: #000000"&gt;.&lt;/span&gt;&lt;span style="color: #8b4513"&gt;Job&lt;/span&gt;&lt;span style="color: #000000"&gt;      &lt;br /&gt;      &lt;br /&gt;&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;while&lt;/span&gt;&lt;span style="color: #000000"&gt; (&lt;/span&gt;&lt;span style="color: #800080"&gt;$Job&lt;/span&gt;&lt;span style="color: #000000"&gt;.&lt;/span&gt;&lt;span style="color: #8b4513"&gt;JobState&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;-eq&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #000000"&gt;4&lt;/span&gt;&lt;span style="color: #000000"&gt;)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #5f9ea0"&gt;Write-Progress&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #5f9ea0"&gt;-Id&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #000000"&gt;2&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #5f9ea0"&gt;-ParentId&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #000000"&gt;1&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;$Job&lt;/span&gt;&lt;span style="color: #000000"&gt;.&lt;/span&gt;&lt;span style="color: #8b4513"&gt;Caption&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #5f9ea0"&gt;-Status&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;Executing&amp;quot;&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #5f9ea0"&gt;-PercentComplete&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;$Job&lt;/span&gt;&lt;span style="color: #000000"&gt;.&lt;/span&gt;&lt;span style="color: #8b4513"&gt;PercentComplete&lt;/span&gt;&lt;span style="color: #000000"&gt;      &lt;br /&gt;&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #5f9ea0"&gt;Start-Sleep&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #000000"&gt;1&lt;/span&gt;&lt;span style="color: #000000"&gt;      &lt;br /&gt;&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #800080"&gt;$Job&lt;/span&gt;&lt;span style="color: #000000"&gt;.&lt;/span&gt;&lt;span style="color: #8b4513"&gt;PSBase&lt;/span&gt;&lt;span style="color: #000000"&gt;.&lt;/span&gt;&lt;span style="color: #8b4513"&gt;Get&lt;/span&gt;&lt;span style="color: #000000"&gt;()      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }       &lt;br /&gt;&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt; (&lt;/span&gt;&lt;span style="color: #800080"&gt;$Job&lt;/span&gt;&lt;span style="color: #000000"&gt;.&lt;/span&gt;&lt;span style="color: #8b4513"&gt;JobState&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;-ne&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #000000"&gt;7&lt;/span&gt;&lt;span style="color: #000000"&gt;)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #5f9ea0"&gt;Write-Error&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;$Job&lt;/span&gt;&lt;span style="color: #000000"&gt;.&lt;/span&gt;&lt;span style="color: #8b4513"&gt;ErrorDescription&lt;/span&gt;&lt;span style="color: #000000"&gt;      &lt;br /&gt;&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;Throw&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;$Job&lt;/span&gt;&lt;span style="color: #000000"&gt;.&lt;/span&gt;&lt;span style="color: #8b4513"&gt;ErrorDescription&lt;/span&gt;&lt;span style="color: #000000"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }       &lt;br /&gt;&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;elseif&lt;/span&gt;&lt;span style="color: #000000"&gt; (&lt;/span&gt;&lt;span style="color: #800080"&gt;$Result&lt;/span&gt;&lt;span style="color: #000000"&gt;.&lt;/span&gt;&lt;span style="color: #8b4513"&gt;ReturnValue&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;-ne&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #000000"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {       &lt;br /&gt;&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;Throw&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;$Result&lt;/span&gt;&lt;span style="color: #000000"&gt;.&lt;/span&gt;&lt;span style="color: #8b4513"&gt;ReturnValue&lt;/span&gt;&lt;span style="color: #000000"&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }       &lt;br /&gt;&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #5f9ea0"&gt;Write-Progress&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;$Job&lt;/span&gt;&lt;span style="color: #000000"&gt;.&lt;/span&gt;&lt;span style="color: #8b4513"&gt;Caption&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #5f9ea0"&gt;-Status&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;Completed&amp;quot;&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #5f9ea0"&gt;-PercentComplete&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #000000"&gt;100&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #5f9ea0"&gt;-Id&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #000000"&gt;2&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #5f9ea0"&gt;-ParentId&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #000000"&gt;1&lt;/span&gt;&lt;span style="color: #000000"&gt;      &lt;br /&gt;}       &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color: #000000"&gt;#Main Script Body      &lt;br /&gt;&lt;/span&gt;&lt;span style="color: #800080"&gt;$VMManagementService&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #5f9ea0"&gt;Get-WmiObject&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #5f9ea0"&gt;-Namespace&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;root&lt;/span&gt;&lt;span style="color: #000000"&gt;\&lt;/span&gt;&lt;span style="color: #0000ff"&gt;virtualization&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #5f9ea0"&gt;-Class&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;Msvm_VirtualSystemManagementService&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #5f9ea0"&gt;-ComputerName&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;$HyperVHost&lt;/span&gt;&lt;span style="color: #000000"&gt;      &lt;br /&gt;&lt;/span&gt;&lt;span style="color: #800080"&gt;$SourceVm&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #5f9ea0"&gt;Get-WmiObject&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #5f9ea0"&gt;-Namespace&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;root&lt;/span&gt;&lt;span style="color: #000000"&gt;\&lt;/span&gt;&lt;span style="color: #0000ff"&gt;virtualization&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #5f9ea0"&gt;-Query&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;Select * From Msvm_ComputerSystem Where ElementName='$MasterVM'&amp;quot;&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #5f9ea0"&gt;-ComputerName&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;$HyperVHost&lt;/span&gt;&lt;span style="color: #000000"&gt;      &lt;br /&gt;&lt;/span&gt;&lt;span style="color: #800080"&gt;$a&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #000000"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color: #000000"&gt;     &lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;while&lt;/span&gt;&lt;span style="color: #000000"&gt; (&lt;/span&gt;&lt;span style="color: #800080"&gt;$a&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;-lt&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #000000"&gt;10&lt;/span&gt;&lt;span style="color: #000000"&gt;) {      &lt;br /&gt;&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #5f9ea0"&gt;write-progress&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #5f9ea0"&gt;-Id&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #000000"&gt;1&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;Cloning Vm's&amp;quot;&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #5f9ea0"&gt;-Status&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;Executing&amp;quot;&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #5f9ea0"&gt;-percentcomplete&lt;/span&gt;&lt;span style="color: #000000"&gt; ((&lt;/span&gt;&lt;span style="color: #800080"&gt;$a&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;/&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #000000"&gt;10&lt;/span&gt;&lt;span style="color: #000000"&gt;)&lt;/span&gt;&lt;span style="color: #ff0000"&gt;*&lt;/span&gt;&lt;span style="color: #000000"&gt;100&lt;/span&gt;&lt;span style="color: #000000"&gt;)      &lt;br /&gt;&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #800080"&gt;$tempVMName&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;$NewName - $a&amp;quot;&lt;/span&gt;&lt;span style="color: #000000"&gt;      &lt;br /&gt;&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #800080"&gt;$VMSettingData&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #5f9ea0"&gt;Get-WmiObject&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #5f9ea0"&gt;-Namespace&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;root&lt;/span&gt;&lt;span style="color: #000000"&gt;\&lt;/span&gt;&lt;span style="color: #0000ff"&gt;virtualization&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #5f9ea0"&gt;-Query&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;Associators of {$SourceVm} Where ResultClass=Msvm_VirtualSystemSettingData AssocClass=Msvm_SettingsDefineState&amp;quot;&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #5f9ea0"&gt;-ComputerName&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;$HyperVHost&lt;/span&gt;&lt;span style="color: #000000"&gt;      &lt;br /&gt;&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #800080"&gt;$VMSettingData&lt;/span&gt;&lt;span style="color: #000000"&gt;.&lt;/span&gt;&lt;span style="color: #8b4513"&gt;ElementName&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;$tempVMName&lt;/span&gt;&lt;span style="color: #000000"&gt;      &lt;br /&gt;      &lt;br /&gt;&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #800080"&gt;$Result&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;$VMManagementService&lt;/span&gt;&lt;span style="color: #000000"&gt;.&lt;/span&gt;&lt;span style="color: #8b4513"&gt;ModifyVirtualSystem&lt;/span&gt;&lt;span style="color: #000000"&gt;(&lt;/span&gt;&lt;span style="color: #800080"&gt;$SourceVm&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;$VMSettingData&lt;/span&gt;&lt;span style="color: #000000"&gt;.&lt;/span&gt;&lt;span style="color: #8b4513"&gt;PSBase&lt;/span&gt;&lt;span style="color: #000000"&gt;.&lt;/span&gt;&lt;span style="color: #8b4513"&gt;GetText&lt;/span&gt;&lt;span style="color: #000000"&gt;(&lt;/span&gt;&lt;span style="color: #000000"&gt;1&lt;/span&gt;&lt;span style="color: #000000"&gt;))      &lt;br /&gt;&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;ProcessWMIJob&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;$Result&lt;/span&gt;&lt;span style="color: #000000"&gt;      &lt;br /&gt;      &lt;br /&gt;&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #800080"&gt;$Result&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;$VMManagementService&lt;/span&gt;&lt;span style="color: #000000"&gt;.&lt;/span&gt;&lt;span style="color: #8b4513"&gt;ExportVirtualSystem&lt;/span&gt;&lt;span style="color: #000000"&gt;(&lt;/span&gt;&lt;span style="color: #800080"&gt;$SourceVm&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;$TRUE&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;$Path&amp;quot;&lt;/span&gt;&lt;span style="color: #000000"&gt;)      &lt;br /&gt;&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;ProcessWMIJob&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;$Result&lt;/span&gt;&lt;span style="color: #000000"&gt;      &lt;br /&gt;      &lt;br /&gt;&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #800080"&gt;$Result&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;$VMManagementService&lt;/span&gt;&lt;span style="color: #000000"&gt;.&lt;/span&gt;&lt;span style="color: #8b4513"&gt;ImportVirtualSystem&lt;/span&gt;&lt;span style="color: #000000"&gt;(&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;$Path\$tempVMName&amp;quot;&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;$TRUE&lt;/span&gt;&lt;span style="color: #000000"&gt;)      &lt;br /&gt;&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #0000ff"&gt;ProcessWMIJob&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;$Result&lt;/span&gt;&lt;span style="color: #000000"&gt;      &lt;br /&gt;      &lt;br /&gt;&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #800080"&gt;$a&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;++&lt;/span&gt;&lt;span style="color: #000000"&gt;      &lt;br /&gt;} &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color: #000000"&gt;     &lt;br /&gt;&lt;/span&gt;&lt;span style="color: #5f9ea0"&gt;write-progress&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #5f9ea0"&gt;-Id&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #000000"&gt;1&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #5f9ea0"&gt;-Completed&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;$TRUE&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #5f9ea0"&gt;-Activity&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;Cloning Vm's&amp;quot;&lt;/span&gt;&lt;span style="color: #000000"&gt;      &lt;br /&gt;&lt;/span&gt;&lt;span style="color: #800080"&gt;$VMSettingData&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #5f9ea0"&gt;Get-WmiObject&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #5f9ea0"&gt;-Namespace&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;root&lt;/span&gt;&lt;span style="color: #000000"&gt;\&lt;/span&gt;&lt;span style="color: #0000ff"&gt;virtualization&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #5f9ea0"&gt;-Query&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;Associators of {$SourceVm} Where ResultClass=Msvm_VirtualSystemSettingData AssocClass=Msvm_SettingsDefineState&amp;quot;&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #5f9ea0"&gt;-ComputerName&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;$HyperVHost&lt;/span&gt;&lt;span style="color: #000000"&gt;      &lt;br /&gt;&lt;/span&gt;&lt;span style="color: #800080"&gt;$VMSettingData&lt;/span&gt;&lt;span style="color: #000000"&gt;.&lt;/span&gt;&lt;span style="color: #8b4513"&gt;ElementName&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;$MasterVM&lt;/span&gt;&lt;span style="color: #000000"&gt;      &lt;br /&gt;      &lt;br /&gt;&lt;/span&gt;&lt;span style="color: #800080"&gt;$Result&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #ff0000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;$VMManagementService&lt;/span&gt;&lt;span style="color: #000000"&gt;.&lt;/span&gt;&lt;span style="color: #8b4513"&gt;ModifyVirtualSystem&lt;/span&gt;&lt;span style="color: #000000"&gt;(&lt;/span&gt;&lt;span style="color: #800080"&gt;$SourceVm&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;$VMSettingData&lt;/span&gt;&lt;span style="color: #000000"&gt;.&lt;/span&gt;&lt;span style="color: #8b4513"&gt;PSBase&lt;/span&gt;&lt;span style="color: #000000"&gt;.&lt;/span&gt;&lt;span style="color: #8b4513"&gt;GetText&lt;/span&gt;&lt;span style="color: #000000"&gt;(&lt;/span&gt;&lt;span style="color: #000000"&gt;1&lt;/span&gt;&lt;span style="color: #000000"&gt;))      &lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;ProcessWMIJob&lt;/span&gt;&lt;span style="color: #000000"&gt; &lt;/span&gt;&lt;span style="color: #800080"&gt;$Result&lt;/span&gt;     &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;- Taylor Brown      &lt;br /&gt;- Hyper-V Test Team&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/virtualization/WindowsLiveWriter/HyperVRC1ReleaseAvailableofMicrosoftDown_EC08/image_2.png"&gt;&lt;img title="image" height="60" alt="image" src="http://blogs.technet.com/blogfiles/virtualization/WindowsLiveWriter/HyperVRC1ReleaseAvailableofMicrosoftDown_EC08/image_thumb.png" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;br /&gt;&lt;!-- Start of StatCounter Code --&gt;&lt;SCRIPT type=text/javascript&gt;
sc_project=3725534; 
sc_invisible=1; 
sc_partition=45; 
sc_security="9a688012"; 
&lt;/SCRIPT&gt;&lt;SCRIPT src="http://www.statcounter.com/counter/counter_xhtml.js" type="text/javascript"&gt;&lt;/SCRIPT&gt;&lt;noscript&gt;&lt;/noscript&gt;&lt;!-- End of StatCounter Code --&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3067493" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/virtualization/archive/tags/Hyper-V/default.aspx">Hyper-V</category><category domain="http://blogs.technet.com/virtualization/archive/tags/virtualization/default.aspx">virtualization</category><category domain="http://blogs.technet.com/virtualization/archive/tags/WMI/default.aspx">WMI</category></item><item><title>Hyper-V WMI Using PowerShell Scripts – Part 5</title><link>http://blogs.technet.com/virtualization/archive/2008/05/26/hyper-v-wmi-using-powershell-scripts-part-5.aspx</link><pubDate>Tue, 27 May 2008 09:31:06 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3061488</guid><dc:creator>Taylorb</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.technet.com/virtualization/comments/3061488.aspx</comments><wfw:commentRss>http://blogs.technet.com/virtualization/commentrss.aspx?PostID=3061488</wfw:commentRss><description>&lt;p&gt;I hope everyone had a great Memorial Day weekend – we had a four day weekend on the Hyper-V team which was excellent!&amp;#160; In this post I am going to show how to create a new virtual switch attached to an external network.&amp;#160; I’ll start with a complete script and then take it apart and explain what each part is doing.&lt;/p&gt;  &lt;table class="" cellspacing="0" cellpadding="0" width="95%" bgcolor="#fafafa" border="2"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td class="" valign="top"&gt;         &lt;p&gt;&lt;font face="Courier New" color="#000000" size="2"&gt;$VirtualSwitchService = get-wmiobject -class &amp;quot;Msvm_VirtualSwitchManagementService&amp;quot; -namespace &amp;quot;root\virtualization&amp;quot;              &lt;br /&gt;$ReturnObject = $VirtualSwitchService.CreateSwitch([guid]::NewGuid().ToString(), &amp;quot;New External Switch&amp;quot;, &amp;quot;1024&amp;quot;,&amp;quot;&amp;quot;) &lt;/font&gt;&lt;/p&gt;          &lt;p&gt;&lt;font face="Courier New" color="#000000" size="2"&gt;#Create New Virtual Switch              &lt;br /&gt;$CreatedSwitch = [WMI]$ReturnObject.CreatedVirtualSwitch &lt;/font&gt;&lt;/p&gt;          &lt;p&gt;&lt;font face="Courier New" color="#000000" size="2"&gt;#Create Internal Switch Port              &lt;br /&gt;$ReturnObject = $VirtualSwitchService.CreateSwitchPort($CreatedSwitch, [guid]::NewGuid().ToString(), &amp;quot;InternalSwitchPort&amp;quot;, &amp;quot;&amp;quot;)               &lt;br /&gt;$InternalSwitchPort = [WMI]$ReturnObject.CreatedSwitchPort &lt;/font&gt;&lt;/p&gt;          &lt;p&gt;&lt;font face="Courier New" color="#000000" size="2"&gt;#Create External Switch Port              &lt;br /&gt;$ReturnObject = $VirtualSwitchService.CreateSwitchPort($CreatedSwitch, [guid]::NewGuid().ToString(), &amp;quot;ExternalSwitchPort&amp;quot;, &amp;quot;&amp;quot;)               &lt;br /&gt;$ExternalSwitchPort = [WMI]$ReturnObject.CreatedSwitchPort &lt;/font&gt;&lt;/p&gt;          &lt;p&gt;&lt;font face="Courier New" color="#000000" size="2"&gt;$ExternalNic = get-wmiobject -namespace &amp;quot;root\virtualization&amp;quot; -Query &amp;quot;Select * From Msvm_ExternalEthernetPort WHERE IsBound=False&amp;quot;&lt;/font&gt;&lt;/p&gt;          &lt;p&gt;&lt;font face="Courier New" color="#000000" size="2"&gt;#Call SetupSwitch              &lt;br /&gt;$Job = $VirtualSwitchService.SetupSwitch($ExternalSwitchPort, $InternalSwitchPort, $ExternalNic, [guid]::NewGuid().ToString(), &amp;quot;InternalEthernetPort&amp;quot;)               &lt;br /&gt;while (([WMI]$Job.Job.JobState -eq 2) -or ([WMI]$Job.Job.JobState -eq 3) -or ([WMI]$Job.Job.JobState -eq 4)) {Start-Sleep -m 100}               &lt;br /&gt;[WMI]$Job.Job&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;Before explaining the elements of the script, I think it’s important to explain a little about Hyper-V’s networking model.&amp;#160; Hyper-V’s networking model attempts to be a similar to a real network, there are virtual switches, virtual switch ports and network adapters.&amp;#160; When you create a new external virtual network you are actually creating a virtual switch, an internal and external switch port and a virtual network adapter on the host.&lt;/p&gt;  &lt;p&gt;So let's look at the script above section by section.&lt;/p&gt;  &lt;h1&gt;Section 1 - Creating The Switch&lt;/h1&gt;  &lt;table class="" cellspacing="0" cellpadding="0" width="1077" bgcolor="#fafafa" border="2"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td class="" valign="top" width="1073"&gt;         &lt;p&gt;&lt;font face="Courier New" color="#000000" size="2"&gt;$VirtualSwitchService = get-wmiobject -class &amp;quot;Msvm_VirtualSwitchManagementService&amp;quot; -namespace &amp;quot;root\virtualization&amp;quot;              &lt;br /&gt;$ReturnObject = $VirtualSwitchService.CreateSwitch([guid]::NewGuid().ToString(), &amp;quot;DemoExternal&amp;quot;, &amp;quot;1024&amp;quot;,&amp;quot;&amp;quot;) &lt;/font&gt;&lt;/p&gt;          &lt;p&gt;&lt;font face="Courier New" color="#000000" size="2"&gt;Create New Virtual Switch              &lt;br /&gt;$CreatedSwitch = [WMI]$ReturnObject.CreatedVirtualSwitch &lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;This section get's the Msvm_VirtualSwtichManagmentService, this is similar to other management service classes like msvm_imagemanagmentsevice.&amp;#160; The second line creates the switch, the first parameter to this function is the switch name, typically a guid is a good unique name, the second parameter is the friendly name (what you will see in the UI), the third parameter is the number of learnable addresses in the switch, the last parameter the AzMan scope name (I'll talk more about those in a later post).&amp;#160; The third line retrieves the WMI object for the created switch.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h1&gt;Section 2 - Creating Switch Ports    &lt;br /&gt;&lt;/h1&gt;  &lt;table class="" cellspacing="0" cellpadding="0" width="1077" bgcolor="#fafafa" border="2"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td class="" valign="top" width="1073"&gt;         &lt;p&gt;&lt;font face="Courier New" color="#000000" size="2"&gt;#Create Internal Switch Port              &lt;br /&gt;$ReturnObject = $VirtualSwitchService.CreateSwitchPort($CreatedSwitch, [guid]::NewGuid().ToString(), &amp;quot;InternalSwitchPort&amp;quot;, &amp;quot;&amp;quot;)               &lt;br /&gt;$InternalSwitchPort = [WMI]$ReturnObject.CreatedSwitchPort &lt;/font&gt;&lt;/p&gt;          &lt;p&gt;&lt;font face="Courier New" color="#000000" size="2"&gt;#Create External Switch Port              &lt;br /&gt;$ReturnObject = $VirtualSwitchService.CreateSwitchPort($CreatedSwitch, [guid]::NewGuid().ToString(), &amp;quot;ExternalSwitchPort&amp;quot;, &amp;quot;&amp;quot;)               &lt;br /&gt;$ExternalSwitchPort = [WMI]$ReturnObject.CreatedSwitchPort &lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;This section creates the internal and external switch ports, think of these as the ports on a physical switch that you would attach to your PC or Modem.&amp;#160; In both cases we are calling the CreateSwitchPort method.&amp;#160; The first parameter is switch we created in the previous section, the second parameter is the switch port name again we using a guid, the third the friendly name this name does not have to be unique and can be anything you want, and the final parameter again is the AzMan scope.&amp;#160; We again retrieve the created switch port's as WMI objects.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h1&gt;Section 3 - Retrieving External Ethernet Connection    &lt;br /&gt;&lt;/h1&gt;  &lt;table class="" cellspacing="0" cellpadding="0" width="1077" bgcolor="#fafafa" border="2"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td class="" valign="top" width="1073"&gt;         &lt;p&gt;&lt;font face="Courier New" color="#000000" size="2"&gt;$ExternalNic = get-wmiobject -namespace &amp;quot;root\virtualization&amp;quot; -Query &amp;quot;Select * From Msvm_ExternalEthernetPort WHERE IsBound=False&amp;quot;&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;This section retrieves the external Ethernet port think of this as the port on the modem or the actual network adapter on the physical machine.&amp;#160; This query should return only one adapter, in the query above I select all adapters on the machine that are not already bound to a switch (hence the IsBound=False) so if I had two network adapters that not bound this query would need to be more specific.&amp;#160; You'll need to figure out what your criteria will be try running &amp;quot;&lt;font size="2"&gt;&lt;font face="Courier New"&gt;get-wmiobject -namespace &amp;quot;root\virtualization&amp;quot; -Query &amp;quot;Select * From Msvm_ExternalEthernetPort&amp;quot; &lt;/font&gt;&lt;/font&gt;this will return all of the information available to query against.&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;h1&gt;Section 4 - Bringing It All Together&lt;/h1&gt;  &lt;table class="" cellspacing="0" cellpadding="0" width="1077" bgcolor="#fafafa" border="2"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td class="" valign="top" width="1073"&gt;         &lt;p&gt;&lt;font face="Courier New" color="#000000" size="2"&gt;$Job = $VirtualSwitchService.SetupSwitch($ExternalSwitchPort, $InternalSwitchPort, $ExternalNic, [guid]::NewGuid().ToString(), &amp;quot;InternalEthernetPort&amp;quot;)&lt;/font&gt;&lt;/p&gt;          &lt;p&gt;&lt;font face="Courier New" color="#000000" size="2"&gt;&amp;#160; &lt;br /&gt;while (([WMI]$Job.Job.JobState -eq 2) -or ([WMI]$Job.Job.JobState -eq 3) -or ([WMI]$Job.Job.JobState -eq 4)) {Start-Sleep -m 100}               &lt;br /&gt;[WMI]$Job.Job&lt;/font&gt; &lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;This final section bring's it all together.&amp;#160; The SetupSwitch method takes the WMI objects for the switch, switch ports, external Ethernet port as well as a name and friendly name and binds all the switch port's together.&amp;#160; Up to this point if you looked in the Hyper-V Network Manger you would see your switch but it would be a private switch; after this it will be an external switch.&amp;#160; The last two lines just wait for the returned WMI object to complete and then prints out the object.&lt;/p&gt;  &lt;p&gt;That's it!&amp;#160; You now have an external network.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;- Taylor Brown      &lt;br /&gt;- Hyper-V Test Team&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/virtualization/WindowsLiveWriter/HyperVRC1ReleaseAvailableofMicrosoftDown_EC08/image_2.png"&gt;&lt;img title="image" height="60" alt="image" src="http://blogs.technet.com/blogfiles/virtualization/WindowsLiveWriter/HyperVRC1ReleaseAvailableofMicrosoftDown_EC08/image_thumb.png" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;!-- Start of StatCounter Code --&gt;&lt;SCRIPT type=text/javascript&gt;
sc_project=3725534; 
sc_invisible=1; 
sc_partition=45; 
sc_security="9a688012"; 
&lt;/SCRIPT&gt;&lt;SCRIPT src="http://www.statcounter.com/counter/counter_xhtml.js" type="text/javascript"&gt;&lt;/SCRIPT&gt;&lt;noscript&gt;&lt;/noscript&gt;&lt;!-- End of StatCounter Code --&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3061488" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/virtualization/archive/tags/Hyper-V/default.aspx">Hyper-V</category><category domain="http://blogs.technet.com/virtualization/archive/tags/virtualization/default.aspx">virtualization</category><category domain="http://blogs.technet.com/virtualization/archive/tags/WMI/default.aspx">WMI</category></item></channel></rss>