<?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>Building Clouds Blog</title><link>http://blogs.technet.com/b/privatecloud/</link><description>Cloud &amp;amp; Datacenter Solutions. (Formerly, The Private Cloud Architecture Blog)</description><dc:language>en-US</dc:language><generator>Telligent Evolution Platform Developer Build (Build: 5.6.50428.7875)</generator><item><title>Deployment–PDT Workflow.xml 1004 now available</title><link>http://blogs.technet.com/b/privatecloud/archive/2013/05/22/deployment-pdt-workflow-xml-1004-now-available.aspx</link><pubDate>Wed, 22 May 2013 20:51:39 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3574248</guid><dc:creator>Rob Willis (MSFT)</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/privatecloud/rsscomments.aspx?WeblogPostID=3574248</wfw:commentRss><comments>http://blogs.technet.com/b/privatecloud/archive/2013/05/22/deployment-pdt-workflow-xml-1004-now-available.aspx#comments</comments><description>&lt;p&gt;Release 1004 of the Workflow.xml file for the PowerShell Deployment Toolkit is now available on the TechNet Gallery &lt;a href="http://gallery.technet.microsoft.com/PowerShell-Deployment-0bc6582d" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Release 1004 addresses the following issues:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;SharePoint Foundation 2010 fails to install when PowerShell execution policy is set to restricted - PowerShell execution policy is now set to RemoteSigned as necessary for installation of SharePoint 2010 Foundation to complete for the Service Manager SharePoint Web Parts Server role.&lt;/li&gt;    &lt;li&gt;SQL Server 2012 cluster completion fails when a product key is provided - the PID switch is now only provided for cluster preparation, not cluster completion.&lt;/li&gt;    &lt;li&gt;SQL Server 2012 firewall rules are set with incorrect path – the path to the SQL executable is corrected.&lt;/li&gt;    &lt;li&gt;Media validation fails on the System Center 2012 SP1 Management Packs – updated the size validation for the new version of the Windows Server MP.&lt;/li&gt;    &lt;li&gt;Added integration to install Virtual Machine Manager console on Data Protection Manager server when both components are included in a deployment – to allow VM mobility uninterrupted data protection to be enabled.&lt;/li&gt;    &lt;li&gt;Some PowerShell debug entries were incomplete.&lt;/li&gt;    &lt;li&gt;Windows Server 2012 evaluation ISO download fails – the download has been removed from Workflow.xml, this now needs to be manually downloaded.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;No other changes were made to PDT – existing *.ps1 and Variable.xml files can be used with the updated Workflow.xml.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3574248" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/System+Center/">System Center</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/Deployment/">Deployment</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/System+Center+2012+SP1/">System Center 2012 SP1</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/Building+Clouds/">Building Clouds</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/Deployment+Track/">Deployment Track</category></item><item><title>Application Management – Using Linux in Service Templates</title><link>http://blogs.technet.com/b/privatecloud/archive/2013/05/20/application-management-using-linux.aspx</link><pubDate>Mon, 20 May 2013 17:50:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3573245</guid><dc:creator>Kurt Scherer [MSFT]</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/privatecloud/rsscomments.aspx?WeblogPostID=3573245</wfw:commentRss><comments>http://blogs.technet.com/b/privatecloud/archive/2013/05/20/application-management-using-linux.aspx#comments</comments><description>&lt;p&gt;For various reasons, Linux is commonplace in large environments. Deploying VMs running Linux with VMM is a useful feature but there can be some confusion around how to do it. In this post, I&amp;rsquo;ll be going through preparation of Linux images and deployment of Linux in service templates.&lt;/p&gt;
&lt;h2&gt;Linux Preparation&lt;/h2&gt;
&lt;p&gt;There&amp;rsquo;s a bit of necessary preparation that must be done to a disk image containing a Linux installation prior to its use in a template. As such, I wanted to take a moment to discuss what must be done. For the operating system, VMM supports Red Hat, SUSE, CentOS, and Ubuntu. Obviously, if you have other products in your environment that interact with your VMs, you should check the supported OSs for those products. I&amp;rsquo;m going to go through a quick example of preparing a VHD for Linux using &lt;a href="http://releases.ubuntu.com/12.04/"&gt;Ubuntu Server 12.04 LTS&lt;/a&gt;. Now, Ubuntu Server 12.04 LTS has the Hyper-V Integration Services already installed, so we don&amp;rsquo;t have to worry about that piece. If you&amp;rsquo;re using an OS that doesn&amp;rsquo;t have the Hyper-V Integration Services, you&amp;rsquo;ll need to install those. I downloaded the Ubuntu &amp;ldquo;64-bit PC (AMD64) server install CD&amp;rdquo; ISO and created a new VM in Hyper-V, choosing to boot from that ISO image. I don&amp;rsquo;t want to spend a lot of time walking through the Linux installation, as this will vary by distribution. Suffice it to say that I chose all the defaults except for username/password, as they have no defaults. It&amp;rsquo;s probably a good idea to run an update after installation.&lt;/p&gt;
&lt;p&gt;Once the OS install has completed, the next task is to install the &lt;a href="http://technet.microsoft.com/en-us/library/jj860429.aspx"&gt;VMM guest additions&lt;/a&gt; (assuming Hyper-V Integration Services are already installed). On the VMM machine, navigate to&amp;nbsp; &lt;code&gt;%ProgramFiles%\Microsoft System Center 2012\Virtual Machine Manager\agents\Linux&lt;/code&gt; and you&amp;rsquo;ll find 3 files: an install script and two tarballs. It&amp;rsquo;s important to use the correct versions for your VMM server and using the files in this directory will do this. Grab the install script and the appropriate package for your architecture (the *.x64.tar, in our case), and copy those to the Linux VM. I use a disk image for this purpose. You can create a disk image, add a 10MB FAT partition, and then place the files in that disk image. This way, you can add this disk image to the Linux VM to install the guest additions. However you choose to get the files onto the Linux VM, the next step is the installation, which should require nothing more than running the installation script:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/3124.image_5F00_1C1576C1.png"&gt;&lt;img style="float: none; margin: 10px auto 5px; display: block; border-width: 0px;" title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/8814.image_5F00_thumb_5F00_4E0D174B.png" alt="image" width="532" height="176" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Once the VMM guest additions have been installed, the image preparation is complete and you can shutdown the machine. After shutdown, add the disk image for the machine into the VMM Library, and you&amp;rsquo;re all set to deploy Linux VMs. Make sure that you remember the username/password for a privileged account (for simplicity, I&amp;rsquo;m using root, but you probably don&amp;rsquo;t want to use root in your environment).&lt;/p&gt;
&lt;h2&gt;Linux LAMP&lt;/h2&gt;
&lt;p&gt;There are probably thousands of guides on the internet on how to setup a LAMP server in Linux. In fact, some distros have single installation packages for this. It&amp;rsquo;s common and it&amp;rsquo;s easy, so it&amp;rsquo;s a good candidate for a basic service template deployment. First, I create a simple VM template using the disk image:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/6761.image_5F00_42E38D01.png"&gt;&lt;img style="float: none; margin: 10px auto 5px; display: block; border-width: 0px;" title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/2541.image_5F00_thumb_5F00_22C88044.png" alt="image" width="244" height="210" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Give the template some kind of name:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/0407.image_5F00_26D2CE16.png"&gt;&lt;img style="float: none; margin: 10px auto 5px; display: block; border-width: 0px;" title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/5706.image_5F00_thumb_5F00_06B7C159.png" alt="image" width="244" height="212" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Configure any hardware settings, you&amp;rsquo;ll probably want to connect the network card:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/3652.image_5F00_148A0754.png"&gt;&lt;img style="float: none; margin: 10px auto 5px; display: block; border-width: 0px;" title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/7652.image_5F00_thumb_5F00_746EFA96.png" alt="image" width="244" height="211" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In the Operating System configuration, select the Linux option:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/5518.image_5F00_26669B21.png"&gt;&lt;img style="float: none; margin: 10px auto 5px; display: block; border-width: 0px;" title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/8741.image_5F00_thumb_5F00_064B8E64.png" alt="image" width="244" height="212" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Now, specify which distribution and version:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/6607.image_5F00_4D34B161.png"&gt;&lt;img style="float: none; margin: 10px auto 5px; display: block; border-width: 0px;" title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/0830.image_5F00_thumb_5F00_5B06F75C.png" alt="image" width="244" height="210" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Provide a computer name and DNS name for the machine:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/0334.image_5F00_21F01A5A.png"&gt;&lt;img style="float: none; margin: 10px auto 5px; display: block; border-width: 0px;" title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/5125.image_5F00_thumb_5F00_01D50D9D.png" alt="image" width="244" height="211" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Provide the root password or select a Run As account:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/4137.image_5F00_33CCAE27.png"&gt;&lt;img style="float: none; margin: 10px auto 5px; display: block; border-width: 0px;" title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/8360.image_5F00_thumb_5F00_419EF422.png" alt="image" width="244" height="211" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Now comes the scripts to add. Each command will be passed to the shell, but make sure no command requires interaction.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/5226.image_5F00_45A941F4.png"&gt;&lt;img style="float: none; margin: 10px auto 5px; display: block; border-width: 0px;" title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/1016.image_5F00_thumb_5F00_258E3537.png" alt="image" width="244" height="211" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;For a simple LAMP server configuration, we can rely on the package manager for installation. &lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/3173.image_5F00_6C775834.png"&gt;&lt;img style="float: none; margin: 0px auto; display: block; border-width: 0px;" title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/8863.image_5F00_thumb_5F00_33607B32.png" alt="image" width="244" height="126" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The command we want to run are as follows:&lt;/p&gt;
&lt;blockquote&gt;&lt;code&gt;# Disable interactive prompts (MySQL password prompt) &lt;br /&gt;export DEBIAN_FRONTEND=nointeractive &lt;br /&gt;# Run update &lt;br /&gt;apt-get update -y &lt;br /&gt;# Install PHP &lt;br /&gt;apt-get install php5 -y &lt;br /&gt;# Install MySQL &lt;br /&gt;apt-get install mysql-server -y &lt;br /&gt;# Install Apache2 &lt;br /&gt;apt-get install apache2 &amp;ndash;y&lt;/code&gt;&lt;/blockquote&gt;
&lt;p&gt;This is a simple example and shouldn't really be used for a production environment, but the basic process should be clear. At this point, we can deploy this template and have our own Linux LAMP VM.&lt;/p&gt;
&lt;h2&gt;Linux Distributed Database Cluster&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/Distributed_database"&gt;Distributed databases&lt;/a&gt; are a popular way to store information. Some of the more popular names like &lt;a href="http://www.read.seas.harvard.edu/~kohler/class/cs239-w08/decandia07dynamo.pdf"&gt;Dynamo&lt;/a&gt; and &lt;a href="http://research.google.com/archive/gfs.html"&gt;GFS&lt;/a&gt; are propietary technologies, so I&amp;rsquo;ll be using an open-source database called &lt;a href="http://docs.basho.com/riak/latest/"&gt;Riak&lt;/a&gt;. This is an exmaple that would need to be adjusted for production environments, but should showcase the concepts without getting too far into details.&lt;/p&gt;
&lt;p&gt;When Linux configurations become significantly complicated, scripts will need to execute based on some kind of logic. So, we&amp;rsquo;ll create our disk image in the same way, but we&amp;rsquo;ll add a script. This script will perform the configuration steps for us.&lt;/p&gt;
&lt;p&gt;So, before installing the VMM additions and shutting the VM down, edit a new file at /root/install.sh whose content will be:&lt;/p&gt;
&lt;blockquote&gt;&lt;code&gt;# Disable interactive prompts &lt;br /&gt;&lt;/code&gt;&lt;code&gt;export DEBIAN_FRONTEND=nointeractive &lt;br /&gt;# Authorize the apt-key &lt;br /&gt;curl http://apt.basho.com/gpg/basho.apt.key | sudo apt-key add - &lt;br /&gt;# Add repo source &lt;br /&gt;echo deb http://apt.basho.com $(lsb_release -sc) main &amp;gt; /etc/apt/sources.list.d/basho.list &lt;br /&gt;# Update repos &lt;br /&gt;apt-get update -y &lt;br /&gt;# Install Riak &lt;br /&gt;apt-get install riak -y &lt;br /&gt;# Update the configuration with IP address &lt;br /&gt;IP=`ip addr show dev eth0 | grep '.*\..*\..*\..*' | awk '{print $2}' | sed 's|/.*||g'` &lt;br /&gt;sed -i "s|-name riak@127\.0\.0\.1|-name riak@$IP" /etc/riak/vm.args &lt;br /&gt;/usr/sbin/riak start &lt;br /&gt;if [ "$1" = $HOSTNAME ]; then &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # Joining existing cluster &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MASTER=`nslookup $HOSTNAME | grep 'Address: [0-9]' | awk '{print $1}'` &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /usr/sbin/riak-admin cluster join riak@$MASTER &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /usr/sbin/riak-admin cluster plan &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /usr/sbin/riak-admin cluster commit &lt;br /&gt;fi&lt;/code&gt;&lt;/blockquote&gt;
&lt;p&gt;Shutdown the VM and copy the disk as before and we'll make a template to deploy this. First, we&amp;rsquo;ll create a blank service template:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/3005.image_5F00_7A499E2F.png"&gt;&lt;img style="float: none; margin: 10px auto 5px; display: block; border-width: 0px;" title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/2500.image_5F00_thumb_5F00_4132C12D.png" alt="image" width="244" height="57" border="0" /&gt;&lt;/a&gt; This will bring up the Service Template Designer, and we&amp;rsquo;ll choose Blank:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/4666.image_5F00_732A61B7.png"&gt;&lt;img style="float: none; margin: 10px auto 5px; display: block; border-width: 0px;" title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/0456.image_5F00_thumb_5F00_3A1384B5.png" alt="image" width="244" height="169" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Now, drag and drop the VM Template to the canvas to create a new tier twice:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/1732.image_5F00_00FCA7B3.png"&gt;&lt;img style="float: none; margin: 10px auto 5px; display: block; border-width: 0px;" title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/1351.image_5F00_thumb_5F00_0506F585.png" alt="image" width="244" height="89" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Edit the properties of the first tier and let&amp;rsquo;s change the computer name to linuxcluster01 (and the DNS name), and then change the second tier&amp;rsquo;s computer name (and the DNS name) to linuxcluster##. The &amp;lsquo;##&amp;rsquo; will allow VMM to assign the next available computer name numerically (linuxcluster02, linuxcluster03&amp;hellip;) at deployment. If we leave the second tier hard-coded, it cannot be scaled-out. Also, you&amp;rsquo;ll want to change the disk to the new disk we created (you must remove the existing disk before adding the new disk).&lt;/p&gt;
&lt;p&gt;On the second tier&amp;rsquo;s General properties, we&amp;rsquo;ll set a few things. First, set the order to &amp;lsquo;2&amp;rsquo; instead of 1, so that we&amp;rsquo;re certain this tier will always be deployed after the first. Next, select &amp;lsquo;This machine tier can be scaled out&amp;rsquo; and set the maximum instance count to whatever you see fit. You can also choose to create an availability set for this tier, which will prefer VMs in this teir to be deployed to different hosts when possible.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/0755.image_5F00_60E19AF5.png"&gt;&lt;img style="float: none; margin-left: auto; display: block; margin-right: auto; border-width: 0px;" title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/4087.image_5F00_thumb_5F00_40C68E38.png" alt="image" width="244" height="183" border="0" /&gt;&lt;/a&gt;The last step is configuration. In the properties of each tier, select OS Configuration and remove the existing scripts. On each node add only the script we created and the name of the first node (which will be passed to the script):&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/6153.image_5F00_44D0DC0A.png"&gt;&lt;img style="float: none; margin-left: auto; display: block; margin-right: auto; border-width: 0px;" title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/2844.image_5F00_thumb_5F00_0BB9FF08.png" alt="image" width="244" height="228" border="0" /&gt;&lt;/a&gt; Now, our template can be deployed!&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/1348.image_5F00_52A32205.png"&gt;&lt;img style="float: none; margin: 10px auto 5px; display: block; border-width: 0px;" title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/1856.image_5F00_thumb_5F00_049AC290.png" alt="image" width="244" height="188" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Hopefully, you&amp;rsquo;ve learned a few things concerning capabilities of Linux in service templates that you can apply to your own environment.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3573245" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/System+Center/">System Center</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/SCVMM/">SCVMM</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/Service+Templates/">Service Templates</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/Services/">Services</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/SCVMM+2012/">SCVMM 2012</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/System+Center+2012/">System Center 2012</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/System+Center+Virtual+Machine+Manager+2012+Service+Pack+1/">System Center Virtual Machine Manager 2012 Service Pack 1</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/System+Center+Virtual+Machine+Manager/">System Center Virtual Machine Manager</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/System+Center+2012+SP1/">System Center 2012 SP1</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/Application+Management/">Application Management</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/Application+Management+Track/">Application Management Track</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/VMM/">VMM</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/System+Ceter/">System Ceter</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/Linux/">Linux</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/Riak/">Riak</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/LAMP/">LAMP</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/Ubuntu/">Ubuntu</category></item><item><title>Hyper-V Host Network Settings through VMM PowerShell (Part 3)</title><link>http://blogs.technet.com/b/privatecloud/archive/2013/05/20/hyper-v-host-network-settings-through-vmm-powershell-part-3.aspx</link><pubDate>Mon, 20 May 2013 11:14:30 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3573638</guid><dc:creator>Kandavel KR</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/privatecloud/rsscomments.aspx?WeblogPostID=3573638</wfw:commentRss><comments>http://blogs.technet.com/b/privatecloud/archive/2013/05/20/hyper-v-host-network-settings-through-vmm-powershell-part-3.aspx#comments</comments><description>&lt;p&gt;In &lt;a href="http://blogs.technet.com/b/building_clouds/archive/2013/02/22/bare-metal-deploy-through-vmm-powershell-part-1.aspx"&gt;Part 1&lt;/a&gt; and &lt;a href="http://blogs.technet.com/b/privatecloud/archive/2013/03/04/bare-metal-deploy-through-vmm-powershell-part-2.aspx"&gt;Part 2 of this series&lt;/a&gt; I detailed the steps required to deploy BMC (Bare Metal Deploy) and configure the physical network adapter settings using Logical Networks and Logical Switches created in VMM. In this post, I will provide an overview of the necessary steps to configure the physical network adapter settings, create virtual switches and virtual network adapters using Logical Switches, and VM Networks created in VMM through PowerShell.&lt;/p&gt;  &lt;p&gt;If you are not familiar with the concepts of networking in VMM, &lt;a href="http://technet.microsoft.com/en-us/library/gg610596.aspx"&gt;you can read more on TechNet&lt;/a&gt;.&lt;/p&gt;  &lt;h2&gt;&lt;strong&gt;The Solution through the PowerShell Approach: &lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/h2&gt;  &lt;p align="left"&gt;The PowerShell approach is very handy &lt;i&gt;and&lt;/i&gt; reusable – especially when many servers need to be provisioned in the offline mode in an automated way. This post features tips on using the networking Cmdlets in VMM, leveraging the new networking features such as Logical Switch, Uplink port profile and Virtual port profile.&lt;/p&gt;  &lt;p align="left"&gt;&lt;/p&gt;  &lt;p align="left"&gt;Before using the PowerShell, make sure you setup the Hyper-V host (through BMC deployment or other mechanism you follow to install OS) and the host is added to VMM for managing.&lt;/p&gt;  &lt;p align="left"&gt;&lt;/p&gt;  &lt;p align="left"&gt;Here are the network pre-requisites to setup in VMM before the network setting is applied on to the Hyper-V host:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Create one or more Logical Networks to map to the NICs on bare-metal servers.&lt;/li&gt;    &lt;li&gt;Create one or more Logical Switches that encompass the following networking capabilities and properties to be assigned to the NICs on hyper-v host servers.&lt;/li&gt; &lt;/ul&gt;  &lt;ul&gt;   &lt;ul&gt;     &lt;li&gt;Extensions (not discussed in this post).&lt;/li&gt;      &lt;li&gt;Uplink (Contains Uplink Mode for NIC Teaming and one or more Uplink Port Profiles for specifying the NIC teaming mode, load balancing algorithm and the network sites it applies to).&lt;/li&gt;      &lt;li&gt;Virtual Port (Contains one or more virtual port classifications for assigning it to various virtual network adapter workloads based on the bandwidth requirement).&lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;h3&gt;Here are the basic steps to follow in setting the physical and virtual network adapter settings onto Hyper-V host:&lt;/h3&gt;  &lt;p&gt; 1. Import “Virtual Machine Manager” Powershell module if not loaded&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2" width="550" border="1"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="550"&gt;         &lt;p&gt;If (!(Get-Module VirtualMachineManager)) {Import-Module VirtualMachineManager}&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;2. Initialize the variable required for the Cmdlet: (Note: Replace values to match your environment)&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2" width="550" border="1"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="550"&gt;         &lt;p&gt;$ComputerName = &amp;quot;DCMRR25OSD19N28&amp;quot; #Hyper-V Host Computer&lt;/p&gt;          &lt;p&gt;$LSwitch1 = &amp;quot;LSForBMC&amp;quot;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; #Logical Switch Name&lt;/p&gt;          &lt;p&gt;$NativeUPP1 = &amp;quot;UPPForBMC&amp;quot;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; #Uplink Port Profile Name&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;3. Get VMM Objects for the following items:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Logical Switch for setting Virtual Switch with NIC teamed physical adapters&lt;/li&gt;    &lt;li&gt;Native Uplink Port Profile and Profile Set for setting NIC team in physical NIC&lt;/li&gt;    &lt;li&gt;Port Classification for QoS setting in Virtual NIC&lt;/li&gt; &lt;/ul&gt;  &lt;table cellspacing="0" cellpadding="2" width="550" border="1"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="550"&gt;         &lt;p&gt;$LogicalSwitch1 = Get-SCLogicalSwitch -Name $LSwitch1&lt;/p&gt;          &lt;p&gt;$NativeUplinkPortProfile1 = Get-SCNativeUplinkPortProfile -name $NativeUPP1&lt;/p&gt;          &lt;p&gt;$UplinkPortProfileSet1 = Get-SCUplinkPortProfileSet | where { $_.NativeUplinkPortProfile.Name -eq $NativeUPP1 }&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt; 4. Get VMM Objects for the following items: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Port Classification to be used for Host Management virtual network adapter&lt;/li&gt;    &lt;li&gt;Port Classification to be used for Cluster virtual network adapter&lt;/li&gt;    &lt;li&gt;Port Classification to be used for Live Migration virtual network adapter&lt;/li&gt; &lt;/ul&gt;  &lt;table cellspacing="0" cellpadding="2" width="550" border="1"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="550"&gt;         &lt;p&gt;$PortClassificationHost = Get-SCPortClassification -Name &amp;quot;Host management&amp;quot;&lt;/p&gt;          &lt;p&gt;$PortClassificationCluster = Get-SCPortClassification -Name &amp;quot;Host Cluster Workload&amp;quot;&lt;/p&gt;          &lt;p&gt;$PortClassificationLive = Get-SCPortClassification -Name &amp;quot;Live migration workload&amp;quot;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;5. Get VMM Objects for the following items:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;VM Network to be used for Host Management virtual network adapter&lt;/li&gt;    &lt;li&gt;VM Network to be used for Cluster virtual network adapter&lt;/li&gt;    &lt;li&gt;VM Network to be used for Live Migration virtual network adapter&lt;/li&gt; &lt;/ul&gt;  &lt;table cellspacing="0" cellpadding="2" width="550" border="1"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="550"&gt;         &lt;p&gt;$VMNetworkHost = Get-SCVMNetwork -Name &amp;quot;VMNForHost&amp;quot;&lt;/p&gt;          &lt;p&gt;$VMNetworkCluster = Get-SCVMNetwork -Name &amp;quot;VMNForCluster&amp;quot;&lt;/p&gt;          &lt;p&gt;$VMNetworkLive = Get-SCVMNetwork -Name &amp;quot;VMNForLive&amp;quot;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;6. Get Subnet and Static IP Pool for the virtual NIC setting&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2" width="550" border="1"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="550"&gt;         &lt;p&gt;$VMSubnet = Get-SCVMSubnet -VMNetwork $VMNetworkHost -Name &amp;quot;HostvNICSubnet&amp;quot;&lt;/p&gt;          &lt;p&gt;$ipV4Pool = Get-SCStaticIPAddressPool -Name &amp;quot;HostvNICIPPool&amp;quot;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;7. Get the Hyper-V host computer object in VMM&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2" width="550" border="1"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="550"&gt;         &lt;p&gt;$VMHost = Get-SCVMHost -ComputerName $ComputerName &lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;8. Create new GUID for submitting the VMM Cmdlets in group as job:&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2" width="550" border="1"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="550"&gt;         &lt;p&gt;$Jguid=[System.Guid]::Newguid().ToString() &lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;9. Initialize Array variable to hold physical network adapter settings:&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2" width="550" border="1"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="550"&gt;         &lt;p&gt;$HostNetworkAdapter=@()&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;10. Get all physical network adapter objects on the Hyper-V host &lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2" width="550" border="1"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="550"&gt;$VMHostNetworkAdapter=get-scvmhostnetworkadapter -VMHost $VMHost &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;11. Read through and select the physical network adapters and set the Uplink port profile setting for teaming those adapters.&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2" width="550" border="1"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="550"&gt;         &lt;p&gt;$VMHostNetworkAdapter | ForEach-Object {&lt;/p&gt;          &lt;p&gt;if($_.ConnectionName -eq &amp;quot;Ethernet 3&amp;quot;)&lt;/p&gt;          &lt;p&gt;{ &lt;/p&gt;          &lt;p&gt;$HostNetworkAdapter += $_&lt;/p&gt;          &lt;p&gt;Set-SCVMHostNetworkAdapter -VMHostNetworkAdapter $_ -UplinkPortProfileSet $UplinkPortProfileSet1 -JobGroup $Jguid&lt;/p&gt;          &lt;p&gt;}&lt;/p&gt;          &lt;p&gt;if($_.ConnectionName -eq &amp;quot;Ethernet 4&amp;quot;)&lt;/p&gt;          &lt;p&gt;{ &lt;/p&gt;          &lt;p&gt;$HostNetworkAdapter += $_&lt;/p&gt;          &lt;p&gt;Set-SCVMHostNetworkAdapter -VMHostNetworkAdapter $_ -UplinkPortProfileSet $UplinkPortProfileSet1 -JobGroup $Jguid&lt;/p&gt;          &lt;p&gt;}&lt;/p&gt;          &lt;p&gt;} &lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;h5&gt;Sample Output for $HostNetworkAdapter:&lt;/h5&gt;  &lt;table cellspacing="0" cellpadding="2" width="550" border="1"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="550"&gt;         &lt;p&gt; $HostNetworkAdapter | fl name, connectionname, uplinkportprofileset &lt;/p&gt;          &lt;p&gt;Name&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : HP NC362i Integrated DP Gigabit Server Adapter #3            &lt;br /&gt; ConnectionName&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : Ethernet 3             &lt;br /&gt; UplinkPortProfileSet : UPPForBMC_c0f09141-f140-4931-a7d3-90ec6607a3b8 &lt;/p&gt;          &lt;p&gt;Name&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : HP NC362i Integrated DP Gigabit Server Adapter #4            &lt;br /&gt; ConnectionName&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : Ethernet 4             &lt;br /&gt; UplinkPortProfileSet : UPPForBMC_c0f09141-f140-4931-a7d3-90ec6607a3b8&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt; 12. Check virtual switch setting on the Hyper-V host and set/add the teamed adapters to it &lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2" width="550" border="1"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="550"&gt;         &lt;p&gt;$HostVirtualNetwork=Get-SCVirtualNetwork -Name $LSwitch1&lt;/p&gt;          &lt;p&gt;if($HostVirtualNetwork -eq $null)&lt;/p&gt;          &lt;p&gt;{&lt;/p&gt;          &lt;p&gt;New-SCVirtualNetwork -VMHost $VMHost -LogicalSwitch $LogicalSwitch1 -VMHostNetworkAdapters $HostNetworkAdapter -JobGroup $Jguid&lt;/p&gt;          &lt;p&gt;}&lt;/p&gt;          &lt;p&gt;else&lt;/p&gt;          &lt;p&gt;{&lt;/p&gt;          &lt;p&gt;$HostNetworkAdapter+=$HostVirtualNetwork.VMHostNetworkAdapters&lt;/p&gt;          &lt;p&gt;Set-SCVirtualNetwork -VirtualNetwork $HostVirtualNetwork -LogicalSwitch $LogicalSwitch1 -VMHostNetworkAdapters $HostNetworkAdapter -JobGroup $Jguid&lt;/p&gt;          &lt;p&gt;} &lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt; 13. Create the required virtual NICs using VM Network and IP Pool settings &lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2" width="550" border="1"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="550"&gt;         &lt;p&gt;New-SCVirtualNetworkAdapter -VMHost $VMHost -Name &amp;quot;LSForBMC6&amp;quot; -VMNetwork $VMNetworkCluster -LogicalSwitch $LogicalSwitch1 -VMSubnet $VMSubnet -IPv4AddressType &amp;quot;Static&amp;quot; -IPv4AddressPool $ipV4Pool -PortClassification $PortClassificationCluster -JobGroup $Jguid&lt;/p&gt;          &lt;p&gt;New-SCVirtualNetworkAdapter -VMHost $VMHost -Name &amp;quot;LSForBMC7&amp;quot; -VMNetwork $VMNetworkLive -LogicalSwitch $LogicalSwitch1 -VMSubnet $VMSubnet -IPv4AddressType &amp;quot;Static&amp;quot; -IPv4AddressPool $ipV4Pool -PortClassification $PortClassificationLive -JobGroup $Jguid&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;14. Apply the new network settings on the Hyper-V host through the VMM job &lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2" width="550" border="1"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="550"&gt;Set-SCVMHost -VMHost $VMHost -JobGroup $Jguid -RunAsynchronously&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;15. Check the VMM Job output for the completion of Job and also check the target Hyper-V host for the correct &lt;/p&gt;  &lt;p&gt;network settings &lt;/p&gt;  &lt;p&gt;- Select properties for the Hyper-V host and check under “Virtual Switches” for the correct network settings for virtual switch and virtual network adapters &lt;/p&gt;  &lt;p&gt;- Also, you can verify using the VMM PowerShell Cmdlet:&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2" width="550" border="1"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="550"&gt;         &lt;ul&gt;           &lt;li&gt;&lt;u&gt;&lt;strong&gt;Check virtual switch on Hyper-V host:&lt;/strong&gt;&lt;/u&gt;&lt;/li&gt;         &lt;/ul&gt;          &lt;p&gt;PS C:\&amp;gt; get-scvirtualnetwork -VMHost $VMHost | fl name, logicalnetworks, logicalswitch, vmhostnetworkadapters &lt;/p&gt;          &lt;p&gt;Name&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : LSForBMC            &lt;br /&gt; LogicalNetworks&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : {LNForBMC}             &lt;br /&gt; LogicalSwitch&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : LSForBMC             &lt;br /&gt; VMHostNetworkAdapters : {HP NC362i Integrated DP Gigabit Server Adapter #3, HP NC362i Integrated DP Gigabit Server Adapter #4}&lt;/p&gt;          &lt;ul&gt;           &lt;li&gt;&lt;u&gt;&lt;strong&gt;Check virtual network adapters on Hyper-V host:&lt;/strong&gt;&lt;/u&gt;&lt;/li&gt;         &lt;/ul&gt;          &lt;p&gt;PS C:\&amp;gt; get-scvirtualnetworkadapter -vmhost $VMHost | fl name, logicalswitch,virtualnetwork, vmnetwork,portclassification &lt;/p&gt;          &lt;p&gt;Name&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : LSForBMC6            &lt;br /&gt; LogicalSwitch&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : LSForBMC             &lt;br /&gt; VirtualNetwork&amp;#160;&amp;#160;&amp;#160;&amp;#160; : LSForBMC             &lt;br /&gt; VMNetwork&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : VMNForBMC             &lt;br /&gt; PortClassification : Host Cluster Workload &lt;/p&gt;          &lt;p&gt;Name&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : LSForBMC7            &lt;br /&gt; LogicalSwitch&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : LSForBMC             &lt;br /&gt; VirtualNetwork&amp;#160;&amp;#160;&amp;#160;&amp;#160; : LSForBMC             &lt;br /&gt; VMNetwork&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : VMNForBMC             &lt;br /&gt; PortClassification : Live migration&amp;#160; workload &lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;h3&gt;&lt;strong&gt;Summary&lt;/strong&gt;&lt;/h3&gt;  &lt;p&gt;Use the above Cmdlets as reference and make sure the hard coded values are replaced to match the environment. &lt;/p&gt;  &lt;p&gt;In my next post I will focus on automating the storage management through Virtual Machine Manager.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3573638" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/SCVMM/">SCVMM</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/System+Center+2012+SP1/">System Center 2012 SP1</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/Virtual+Machine+Manager/">Virtual Machine Manager</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/Fabric+Track/">Fabric Track</category></item><item><title>Application Management – Underused Template Settings</title><link>http://blogs.technet.com/b/privatecloud/archive/2013/05/17/application-management-more-templates.aspx</link><pubDate>Fri, 17 May 2013 20:56:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3573246</guid><dc:creator>Kurt Scherer [MSFT]</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/privatecloud/rsscomments.aspx?WeblogPostID=3573246</wfw:commentRss><comments>http://blogs.technet.com/b/privatecloud/archive/2013/05/17/application-management-more-templates.aspx#comments</comments><description>&lt;p&gt;This blog post marks the start of a new series on advanced features of Templates in Virtual Machine Manager. Most of the features I&amp;rsquo;ll be showing are lesser-known and scenario-specific, but I hope they will aid users in accomplishing tasks. In this first post, I&amp;rsquo;ll be discussing the use of Organization Units when deploying VMs to a domain.&lt;/p&gt;
&lt;h2&gt;OUs in VM Templates&lt;/h2&gt;
&lt;p&gt;A common best practice for simplification of VM deployments from VMM is to avoid the use of complicated GPOs. For an Active Directory environment that already has GPOs in place, it would be useful to have certain OU containers dedicated to VMs deployed by VMM. This way, the administrator can enforce the &amp;ldquo;no complicated GPOs&amp;rdquo; paradigm.&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/0447.image_5F00_45008BCA.png"&gt;&lt;img style="margin: 10px 0px 5px 10px; display: inline; border-width: 0px;" title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/4670.image_5F00_thumb_5F00_1DC64295.png" alt="image" width="301" height="227" align="right" border="0" /&gt;&lt;/a&gt; &lt;br /&gt; &lt;br /&gt;Within VMM, a VM can be configured to join a domain upon creation by using a VM template. In the OS portion of the VM Template, there is a section for domain configuration, as depicted on the right.&lt;/p&gt;
&lt;p&gt;During deployment, the VM will join the specified domain using the credentials provided. Under the covers, VMM generates an Answer File that contains certain information and attaches it to the VM during completion of the Windows installation (since the disk image containing the OS should have had the Sysprep tool run). &lt;br /&gt; &lt;br /&gt;If we need more advanced options like a specific OU, there are PowerShell cmdlets for performing these operations.&lt;/p&gt;
&lt;p&gt;The cmdlet we&amp;rsquo;ll need is &lt;a href="http://technet.microsoft.com/en-us/library/jj654252.aspx"&gt;&lt;code&gt;Set-SCVMTemplate&lt;/code&gt;&lt;/a&gt;. I&amp;rsquo;ll assume we already have a VM template we want to adjust called &amp;ldquo;Domain&amp;rdquo; as depicted in the figure:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/0451.image_5F00_64AF6592.png"&gt;&lt;img style="float: none; margin: 10px auto 5px; display: block; border-width: 0px;" title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/8865.image_5F00_thumb_5F00_16A7061D.png" alt="image" width="729" height="182" border="0" /&gt;&lt;/a&gt; Now, we&amp;rsquo;ll want an elevated console on which to run a few simple commands. First, we&amp;rsquo;ll import the module containing the necessary cmdlets:&lt;/p&gt;
&lt;blockquote&gt;&lt;code&gt;Import-Module VirtualMachineManager;&lt;/code&gt;&lt;/blockquote&gt;
&lt;p&gt;Next, we&amp;rsquo;ll define the OU container which will contain the VM:&lt;/p&gt;
&lt;blockquote&gt;&lt;code&gt;$ou = "OU=VMs,DC=contoso,DC=com";&lt;/code&gt;&lt;/blockquote&gt;
&lt;p&gt;Notice the formatting of the string. Although the string is not case-sensitive, ensure to use commas and not semi-colons to separate the fields. Next, we get the template object using the &lt;a href="http://technet.microsoft.com/en-us/library/jj647723.aspx"&gt;&lt;code&gt;Get-SCVMTemplate&lt;/code&gt;&lt;/a&gt; cmdlet:&lt;/p&gt;
&lt;blockquote&gt;&lt;code&gt;$template = Get-SCVMTemplate | where {$_.Name -eq "Domain"};&lt;/code&gt;&lt;/blockquote&gt;
&lt;p&gt;The string "Domain" is simply the name of the template. Now we set the OU:&lt;/p&gt;
&lt;blockquote&gt;&lt;code&gt;Set-SCVMTemplate -VMTemplate $template -DomainJoinOrganizationalUnit $ou;&lt;/code&gt;&lt;/blockquote&gt;
&lt;p&gt;And that's it. Obviously, these commands could be combined rather than using the temporary variables but I&amp;rsquo;m aiming for readability.&lt;/p&gt;
&lt;h2&gt;UI Visibility&lt;/h2&gt;
&lt;p&gt;The problem now is the lack of visibility for this setting in the UI. To fix this, we&amp;rsquo;ll use custom properties. First, we&amp;rsquo;ll create a new Custom Property in VMM. First, we&amp;rsquo;ll bring up the properties of the VM template and choose to Manage Custom Properties.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/3107.image_5F00_5D90291A.png"&gt;&lt;img style="float: none; margin: 10px auto 5px; display: block; border-width: 0px;" title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/4667.image_5F00_thumb_5F00_0F87C9A5.png" alt="image" width="469" height="250" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;In the next window, we see a drop-down selector:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/4276.image_5F00_1D5A0FA0.png"&gt;&lt;img style="float: none; margin: 10px auto 5px; display: block; border-width: 0px;" title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/3681.image_5F00_thumb_5F00_4F51B02A.png" alt="image" width="405" height="393" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The concept of managing custom properties can be a bit confusing. When managing these properties, we&amp;rsquo;re not changing our VM Template, we&amp;rsquo;re adjusting the global settings for custom properties. By selecting Virtual Machine Template as the object type, I&amp;rsquo;m adding a custom property that will be available to all VM Templates. Next, I&amp;rsquo;m going to add a property called OU. Now I choose to create a property and name it: &lt;br /&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/8461.image_5F00_442825E0.png"&gt;&lt;img style="float: none; margin: 10px auto 5px; display: block; border-width: 0px;" title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/8080.image_5F00_thumb_5F00_483273B2.png" alt="image" width="340" height="322" border="0" /&gt;&lt;/a&gt; Now, I add this property to the VM Template object:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/4274.image_5F00_0F1B96B0.png"&gt;&lt;img style="float: none; margin: 10px auto 0px; display: block; border-width: 0px;" title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/7416.image_5F00_thumb_5F00_35E9ACF0.png" alt="image" width="239" height="244" border="0" /&gt;&lt;/a&gt; And we&amp;rsquo;ll see this property appear in the list:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/2548.image_5F00_4EE57D35.png"&gt;&lt;img style="float: none; margin: 10px auto 5px; display: block; border-width: 0px;" title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/6648.image_5F00_thumb_5F00_2ECA7078.png" alt="image" width="347" height="258" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;We could type something in the box if we wanted, but we&amp;rsquo;ll do that later. Back to the main screen, we can now add this property to the view by right-clicking the columns:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/4505.image_5F00_75B39375.png"&gt;&lt;img style="float: none; margin: 10px auto 5px; display: block; border-width: 0px;" title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/7737.image_5F00_thumb_5F00_0385D971.png" alt="image" width="207" height="343" border="0" /&gt;&lt;/a&gt;Now, we can populate this field for all VM templates in PowerShell using the &lt;a href="http://technet.microsoft.com/en-us/library/hh801306.aspx"&gt;&lt;code&gt;Set-SCCustomPropertyValue&lt;/code&gt;&lt;/a&gt; cmdlet:&lt;/p&gt;
&lt;div&gt;
&lt;blockquote&gt;&lt;code&gt;Get-SCVMTemplate | %{ Set-SCCustomPropertyValue -InputObject $_ -CustomProperty $(Get-SCCustomProperty -Name "OU") -Value $_.DomainJoinOrganizationalUnit };&lt;/code&gt;&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;Back in the UI, this value has now been populated:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/4111.image_5F00_07902743.png"&gt;&lt;img style="float: none; margin: 10px auto 5px; display: block; border-width: 0px;" title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/0882.image_5F00_thumb_5F00_552C53C3.png" alt="image" width="669" height="46" border="0" /&gt;&lt;/a&gt; To keep this info always in sync, you might consider adding this line of PowerShell to an scheduled task queue on the VMM server.&lt;/p&gt;
&lt;h2&gt;OUs in Service Templates&lt;/h2&gt;
&lt;p&gt;Now, if you&amp;rsquo;re using service templates, you might wonder how this can be applied to a tier and how to parameterize it. It&amp;rsquo;s important to realize that VM templates placed into service templates are copied by value and no reference is made to the original. So, if you set a domain OU in the VM template and add it to a service template, the value of the OU will be copied but changing it proves a little more difficult (changes in the original VM template will not propagate to the service).&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s important to understand that a VM tier in a service template corresponds to a VM template, although this relationship is not exactly exposed to the UI. So, let&amp;rsquo;s say we have a service template with two tiers and both tiers have VMs that need to join a domain with a particular OU. It might look something like this:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/8585.image_5F00_3F63E605.png"&gt;&lt;img style="margin: 10px auto 5px; float: none; display: block; background-image: none;" title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/2543.image_5F00_thumb_5F00_69D01722.png" alt="image" width="604" height="366" /&gt;&lt;/a&gt;I created an empty service template and added the VM template we created earlier twice. Because these VM tiers are linked to VM templates, viewing the Custom Properties section of the tier properties shows the OU we set earlier. This value is purely aesthetic; we can&amp;rsquo;t change the OU by adjusting this custom property.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/1157.image_5F00_5EA68CD8.png"&gt;&lt;img style="float: none; margin: 10px auto 5px; display: block; border-width: 0px;" title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/4380.image_5F00_thumb_5F00_109E2D63.png" alt="image" width="565" height="422" border="0" /&gt;&lt;/a&gt; If we added the earlier bit of PowerShell to the scheduled tasks, this custom property will be updated if we change the &lt;code&gt;DomainJoinOrganizationUnit&lt;/code&gt; property for the VM template that&amp;rsquo;s linked by this tier. We&amp;rsquo;ll save this service template as &amp;ldquo;Demo&amp;rdquo; with a Release &amp;ldquo;V1&amp;rdquo; and we&amp;rsquo;ll adjust it in PowerShell:&lt;/p&gt;
&lt;blockquote&gt;&lt;code&gt;$service_template = Get-SCServiceTemplate | where {$_.Name -eq "Demo" -and $_.Release &amp;ndash;eq &amp;ldquo;V1&amp;rdquo;};&lt;/code&gt;&lt;/blockquote&gt;
&lt;p&gt;This service template will have a list of tiers and we&amp;rsquo;ll get the tier we want (although this could be done with a &lt;code&gt;foreach&lt;/code&gt; clause):&lt;/p&gt;
&lt;blockquote&gt;&lt;code&gt;$tier = $service_template.ComputerTierTemplates | where {$_.Name -like "*Tier 1"};&lt;/code&gt;&lt;/blockquote&gt;
&lt;p&gt;The VM template that is linked can now be retrieved:&lt;/p&gt;
&lt;blockquote&gt;&lt;code&gt;$vm_template = $tier.VMTemplate;&lt;/code&gt;&lt;/blockquote&gt;
&lt;p&gt;Once you have the template object, the OU can be updated as before. You&amp;rsquo;ll have to rerun the script to propagate the custom property before you&amp;rsquo;ll see the change reflected in the UI. If you need even more flexibility (say, a service setting for the OU property), you&amp;rsquo;ll need to consider deploying service templates completely outside of the UI and setting this value at deployment time with a script as this property cannot be a service setting.&lt;/p&gt;
&lt;p&gt;That&amp;rsquo;s all for now, stay tuned for upcoming posts in this series.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3573246" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/System+Center+2012/">System Center 2012</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/PowerShell/">PowerShell</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/System+Center+Virtual+Machine+Manager+2012+Service+Pack+1/">System Center Virtual Machine Manager 2012 Service Pack 1</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/Active+Directory/">Active Directory</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/Virtual+Machine+Manager/">Virtual Machine Manager</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/Application+Management/">Application Management</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/Application+Management+Track/">Application Management Track</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/VMM/">VMM</category></item><item><title>I have a Surface RT and going away for a few days, now what??? I have a MSDN subscription :-)</title><link>http://blogs.technet.com/b/privatecloud/archive/2013/05/16/i-have-a-surface-rt-and-going-away-for-a-few-days-now-what-i-have-a-msdn-subscription.aspx</link><pubDate>Thu, 16 May 2013 22:59:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3572866</guid><dc:creator>Anders Ravnholt MSFT</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/privatecloud/rsscomments.aspx?WeblogPostID=3572866</wfw:commentRss><comments>http://blogs.technet.com/b/privatecloud/archive/2013/05/16/i-have-a-surface-rt-and-going-away-for-a-few-days-now-what-i-have-a-msdn-subscription.aspx#comments</comments><description>&lt;p&gt;I know many of you have seen the super cool blog post where my fellow team members &lt;a href="http://blogs.technet.com/b/building_clouds/archive/2013/02/21/surface-pro-hijinks-video.aspx"&gt;build a private cloud out of their new Surface Pros&lt;/a&gt;. It was a cool idea and people really loved the video.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;The cool thing about the Surface Pro is that it’s a normal PC and you can run any regular PC program (Silverlight, Java, Live Writer), as well as many other programs.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;The problem:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;I have not bought a Surface Pro yet (my mistake), but I do have a surface RT. I’m really happy with my Surface RT, but it has some limitations that prevent me from doing certain things on it. I recognized this the other day when I was planning on working while away on a trip – but I didn’t want to bring my PC.&lt;/p&gt;  &lt;p&gt;Here is what I could not do from my Surface RT:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Use live writer (the program I’m using to publish this post) &lt;/li&gt;    &lt;li&gt;Use Java (this is necessary for several websites I use on a regular basis) &lt;/li&gt;    &lt;li&gt;Use Silverlight &lt;/li&gt; &lt;/ul&gt;  &lt;ul&gt;&lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;The Solution:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;I started thinking about how I could solve this problem – and then I remembered that I have a MSDN subscription.&lt;/p&gt;  &lt;p&gt;With MSDN you get the following every month in Windows Azure:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/2625.image_5F00_16610857.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/0181.image_5F00_thumb_5F00_14247F9B.png" width="320" height="315" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;The Scenario:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;I want to build a Windows machine running in Windows Azure, which I can connect to from my Surface RT.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;In this first blog post, I will do the setup and configuration&lt;/p&gt;  &lt;p&gt;In the second blog post, I will walk you through how the gold image can be uploaded to Azure&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;I want to run the following programs in my gold image&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Java &lt;/li&gt;    &lt;li&gt;Silverlight &lt;/li&gt;    &lt;li&gt;Windows Livewriter &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Just for the fun of this blog post, all of it is written on the Windows machine already running in Azure from my Surface RT (except a few steps), and wanted to capture my learning's in this blog post.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;The challenge&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;I have been using Windows Azure for a while and started to use a windows 2012 server to connect to form my Surface. One thing that started to irritate me was the entire configuration I needed to do every time. I just wanted to create a gold image that I could use every time I provision a Windows machine. &lt;/p&gt;  &lt;p&gt;So in order to get my own image, I need to do the following:&lt;/p&gt;  &lt;ol&gt;   &lt;ol&gt;     &lt;li&gt;I need to sign up for Windows Azure (covered in this post) &lt;/li&gt;      &lt;li&gt;I need to install App. controller and configure Azure (covered in this post) &lt;/li&gt;      &lt;li&gt;I need to build my own image (covered in this post) &lt;/li&gt;      &lt;li&gt;I need to move my image to windows Azure from my PC&amp;#160; (covered in the next post) &lt;/li&gt;      &lt;li&gt;I need to provision the VM based on my image in Azure (covered in the next post) &lt;/li&gt;      &lt;li&gt;I need to connect to the Windows machine using Surface RT and configure it to sync settings based on my windows ID (covered in the next post) &lt;/li&gt;   &lt;/ol&gt; &lt;/ol&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Pre-requisites:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;MSDN subscription with access to Azure &lt;/li&gt;    &lt;li&gt;AD Domain for App controller &lt;/li&gt;    &lt;li&gt;Computer running Windows 8 / 2012 with Hyper-V enabled. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Sounds fun, right?&amp;#160; Let’s get started.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;I need to sign up for Windows Azure&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;With my MSDN I get: &lt;/p&gt;  &lt;p&gt;1500 hours of compute hours&lt;/p&gt;  &lt;p&gt;90 Gb/month&lt;/p&gt;  &lt;p&gt;With this, I have been able to run two small machines in Azure without even getting close to the limit. This, of course, depends on what you do and what you enable, which will be at your own risk and cost.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Here is how you can sign up with windows Azure if you have a MSDN subscription:&lt;/p&gt;  &lt;p&gt;Go to &lt;a href="http://msdn.microsoft.com/en-us"&gt;http://msdn.microsoft.com/en-us&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Login with you MSDN Account&lt;/p&gt;  &lt;p&gt;Select Access benefits&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/1651.image_5F00_6D56695A.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/5270.image_5F00_thumb_5F00_0D717618.png" width="244" height="185" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Select ”Activate Windows Azure”&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/6740.image_5F00_66A35FD7.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/5707.image_5F00_thumb_5F00_06BE6C95.png" width="244" height="80" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;When you sign up, make sure it says &lt;strong&gt;Windows Azure MSDN&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;You will be asked for a credit card when activating the subscription. You will only be charged if you use more than you allocated budget.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; Any charges that you may encounter in connection with signing up will be at your own risk and cost.&lt;/p&gt;  &lt;p&gt;Go to &lt;a title="https://manage.windowsazure.com" href="https://manage.windowsazure.com"&gt;https://manage.windowsazure.com&lt;/a&gt; and sign in with your Microsoft account (same as you use for your MSDN)&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;I need to install App. controller and connect to windows Azure&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;App Controller is a tool that can be used to manage multiple clouds from one console.&lt;/p&gt;  &lt;p&gt;App controller can connect to different cloud environments such as VMM and Windows Azure.&lt;/p&gt;  &lt;p&gt;An App Controller installation consists of the following features:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;One App Controller server      &lt;ul&gt;       &lt;li&gt;App Controller server hosts a website console for access by using a supported browser. &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;A SQL Server database &lt;/li&gt;    &lt;li&gt;Windows PowerShell cmdlets &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;All these applications can be down loaded from the MSDN download page using the MSDN download area.&lt;/p&gt;  &lt;p&gt;Steps to install App. Controller can be found here:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://technet.microsoft.com/en-us/library/gg696046.aspx" href="http://technet.microsoft.com/en-us/library/gg696046.aspx"&gt;http://technet.microsoft.com/en-us/library/gg696046.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Once you have App Controller running following the guidance above, you can sign into App. controller&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Configure connection to Azure using certificates:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;On the server where App. controller web server is running follow these steps:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;First you need to create a Management Certificate: &lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;To create your own self-signed management certificates, open a Visual Studio command prompt and execute the following command:&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;makecert -sky exchange -r -n &amp;quot;CN=&amp;lt;CertificateName&amp;gt;&amp;quot; -pe -a sha1 -len 2048 -ss My &amp;quot;&amp;lt;CertificateName&amp;gt;.cer&amp;quot; &lt;/p&gt;    &lt;p&gt;E.g. makecert -sky exchange -r -n &amp;quot;CN=WinAzure&amp;quot; -pe -a sha1 -len 2048 -ss My &amp;quot;c:\temp\WinAzure.cer&amp;quot; &lt;/p&gt;    &lt;p&gt;&lt;a title="http://msdn.microsoft.com/library/gg551722.aspx" href="http://msdn.microsoft.com/library/gg551722.aspx"&gt;http://msdn.microsoft.com/library/gg551722.aspx&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;ul&gt;   &lt;li&gt;Create a Service Certificate for Windows Azure &lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a title="http://msdn.microsoft.com/en-us/library/gg432987.aspx" href="http://msdn.microsoft.com/en-us/library/gg432987.aspx"&gt;http://msdn.microsoft.com/en-us/library/gg432987.aspx&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;I used Create a personal Information Exchange Certificate &amp;gt; To Export a .pfx file by using Certificate Manager and place in c:\temp on the App. Controller server&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt; &lt;/blockquote&gt;  &lt;ul&gt;   &lt;li&gt;Login to Windows Azure Portal: &lt;a title="https://manage.windowsazure.com" href="https://manage.windowsazure.com"&gt;https://manage.windowsazure.com&lt;/a&gt; from App. controller server &lt;/li&gt;    &lt;li&gt;Select “Settings” &lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/6378.image_5F00_2B4FFA19.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/5381.image_5F00_thumb_5F00_605C8949.png" width="204" height="108" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;ul&gt;   &lt;li&gt;Select Manage Certificates &lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/4718.image12_5F00_249CF096.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/3731.image12_5F00_thumb_5F00_36E5B758.png" width="465" height="65" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;ul&gt;   &lt;li&gt;Select “Upload from the bottom of the screen” &lt;/li&gt;    &lt;li&gt;Select “Browse” &lt;/li&gt;    &lt;li&gt;Go to c:\temp &lt;/li&gt;    &lt;li&gt;Select the *.cer file and click “Ok“ &lt;/li&gt;    &lt;li&gt;Once the certificate is uploaded, select “Subscription ID” in the column and cut this to the clipboard. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Connect App. controller to Azure subscription&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;On the App. Controller server start App controller console as Administrator if not already started &lt;/li&gt;    &lt;li&gt;In the App. controller console select Settings &amp;gt; Subscriptions and click “Add”      &lt;ul&gt;       &lt;li&gt;Give the connection a name &lt;/li&gt;        &lt;li&gt;Paste the subscription ID from the clipboard &lt;/li&gt;        &lt;li&gt;Click browse and go to c:\temp and select the pfx file &lt;/li&gt;        &lt;li&gt;Give the password used when exporting the file from Cert manager &lt;/li&gt;        &lt;li&gt;Click “OK”. &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Click “Ok“ &lt;/li&gt;    &lt;li&gt;Select “Library“ &lt;/li&gt;    &lt;li&gt;Select the newly created Azure subscription &lt;/li&gt;    &lt;li&gt;Click “Create storage” &lt;/li&gt;    &lt;li&gt;Give the storage account a name E.g. azurestoragexyz &lt;/li&gt;    &lt;li&gt;Select “West US” for Region and click “Ok” &lt;/li&gt;    &lt;li&gt;Select the newly created storage account and select “Create container” &lt;/li&gt;    &lt;li&gt;Give the container a name and click “Ok“ &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Build my own Windows 2012 image&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;We need to create our own image with Windows update and our programs pre-installed. For virtual images running in Azure, there are a few rules that needs to be followed in order for the image to function correctly. These rules are:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Only vhd files can be uploaded and used (VHDX will not work) &lt;/li&gt;    &lt;li&gt;The image has to be syspreped &lt;/li&gt;    &lt;li&gt;Only fix-sized images will work. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;As long as these three rules are kept in mind, you should be ok.&lt;/p&gt;  &lt;p&gt;In order to create our own image we will do the following:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Download Windows 2012 ISO image from MSDN as well as get a product key and place this image on the server running Windows 2012 Hyper-V &lt;/li&gt;    &lt;li&gt;Start Hyper-v Manager on the Windows 2012 server &lt;/li&gt;    &lt;li&gt;Select New &amp;gt; Virtual Machine under “Action Menu” &lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/2086.image_5F00_3E04F3D0.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/3175.image_5F00_thumb_5F00_1E561A08.png" width="244" height="65" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;ul&gt;   &lt;li&gt;Click Next &lt;/li&gt;    &lt;li&gt;Give the Virtual Machine a name, e.g. Windows2012Base &lt;/li&gt;    &lt;li&gt;Select a location for the VM if needed and click ”Next” &lt;/li&gt;    &lt;li&gt;Assign Memory and click “Next” (Does not need to be more than 1024) &lt;/li&gt;    &lt;li&gt;Select a network that has connection to the internet and click “Next” (We need internet in order to use windows update) &lt;/li&gt;    &lt;li&gt;Under Virtual Disk Select Attach a virtual hard disk later and click “Next” &lt;/li&gt;    &lt;li&gt;Click Finish to create the VM &lt;/li&gt;    &lt;li&gt;Select New &amp;gt; Hard Disk under “Action Menu“ &lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/6712.image21_5F00_499AB10F.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/0458.image21_5F00_thumb_5F00_22CC9ACF.png" width="390" height="100" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;ul&gt;   &lt;li&gt;Select VHD and click “Next” &lt;/li&gt;    &lt;li&gt;Select “Fixed size“ &lt;/li&gt;    &lt;li&gt;Specify the name e.g. windows2012base &lt;/li&gt;    &lt;li&gt;Give the location where the VM was placed earlier e.g. D:\VMs\Virtual Machines\Windows2012Base, click “Next” &lt;/li&gt;    &lt;li&gt;Set size to approx. 30 Gb and click “Finish” &lt;/li&gt;    &lt;li&gt;Select VM created earlier in Hyper-V manager and right click and select “Settings“ &lt;/li&gt;    &lt;li&gt;Select IDE Controller 0 &amp;gt; Hard Drive and click “Add“ &lt;/li&gt;    &lt;li&gt;Click “Browse” and go to the location where the VHD was created &lt;/li&gt;    &lt;li&gt;Click on “DVD Drive” under IDE Controller 1 &lt;/li&gt;    &lt;li&gt;Select Image file &lt;/li&gt;    &lt;li&gt;Browse to the location where the Windows2012 ISO file is located (Downloaded from MSDN earlier) &lt;/li&gt;    &lt;li&gt;Click “OK“ &lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/1512.image_5F00_7BFE848E.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/7206.image_5F00_thumb_5F00_67793510.png" width="379" height="131" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;ul&gt;   &lt;li&gt;Start the VM &lt;/li&gt;    &lt;li&gt;Double Click on the VM to connect to the console &lt;/li&gt;    &lt;li&gt;Select language and keyboard, Click next &lt;/li&gt;    &lt;li&gt;Click “Install now” &lt;/li&gt;    &lt;li&gt;Paste the license key from MSDN into the field and click next &lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;TIP: You can use paste from clipboard &amp;gt; Type Clipboard text&lt;/p&gt; &lt;/blockquote&gt;  &lt;ul&gt;   &lt;li&gt;Select Windows Server with GUI, click “Next” &lt;/li&gt;    &lt;li&gt;Accept license and click “Next” &lt;/li&gt;    &lt;li&gt;Select “Custom: Install..” &lt;/li&gt;    &lt;li&gt;Click “Next”, after some time the VM will reboot a few times after installing the files &lt;/li&gt;    &lt;li&gt;Specify Password &lt;/li&gt;    &lt;li&gt;Click “Finish “ &lt;/li&gt;    &lt;li&gt;Wait for the installation to finish &lt;/li&gt;    &lt;li&gt;Login as Administrator &lt;/li&gt;    &lt;li&gt;Go to “Control Panel” &amp;gt; “System and Security” &amp;gt; “System“ &lt;/li&gt;    &lt;li&gt;Select Remote settings &lt;/li&gt;    &lt;li&gt;Select “Allow remote connections to this computer”, uncheck “Allow connections only from…” and click “Ok “ &lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/5165.image_5F00_559CA143.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/0878.image_5F00_thumb_5F00_0C0AC295.png" width="244" height="145" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;ul&gt;   &lt;li&gt;Start Windows update &lt;/li&gt;    &lt;li&gt;Select check for updates &lt;/li&gt;    &lt;li&gt;Install recommended updates and restart &lt;/li&gt;    &lt;li&gt;After restart run Windows update once more and install any updates missing, restart if needed &lt;/li&gt;    &lt;li&gt;Install Java from here: &lt;a title="http://www.java.com/en/download/win8.jsp?locale=en" href="http://www.java.com/en/download/win8.jsp?locale=en"&gt;http://www.java.com/en/download/win8.jsp?locale=en&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Install Silverlight form here: &lt;a title="http://www.microsoft.com/getsilverlight/get-started/install/default.aspx" href="http://www.microsoft.com/getsilverlight/get-started/install/default.aspx"&gt;http://www.microsoft.com/getsilverlight/get-started/install/default.aspx&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Install Live Writer from here: &lt;a href="http://g.live.com/1rewlive5-web/en/wlsetup-web.exe"&gt;http://g.live.com/1rewlive5-web/en/wlsetup-web.exe&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Start a command prompt as Admin &lt;/li&gt;    &lt;li&gt;Go to c:\windows\system32\sysprep (cd c:\windows\system32\sysprep) &lt;/li&gt;    &lt;li&gt;run sysprep.exe &lt;/li&gt;    &lt;li&gt;Select the following options: &lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/6330.image_5F00_7A2E2EC7.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/7318.image_5F00_thumb_5F00_2572C5CF.png" width="244" height="187" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;ul&gt;   &lt;li&gt;Click “Ok” and sysprep will start, when done, the VM will shutdown. &lt;/li&gt;    &lt;li&gt;Open explorer and go to the directory where the VM vhd is located. &lt;/li&gt;    &lt;li&gt;Copy the VHD from the Hyper-v server to the App. Controller server. e.g c:\vhdstore &lt;/li&gt;    &lt;li&gt;Share the folder e.g. c:\vhdstore on the App Controller server &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;In the next post I’ll explain how you can upload the VHD to Azure, provision a Windows 2012 server to run in Azure, and access it from a Surface RT to write a blog post.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Stay tuned.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3572866" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/virtualization/">virtualization</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/Azure+Virtual+Machines/">Azure Virtual Machines</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/Just+For+Fun+Track/">Just For Fun Track</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/Just+For+Fun/">Just For Fun</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/Virtual+Machine/">Virtual Machine</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/Azure+IaaS/">Azure IaaS</category></item><item><title>Automation–Orchestrator Architecture and Runbook Deployment Process</title><link>http://blogs.technet.com/b/privatecloud/archive/2013/05/16/automation-orchestrator-architecture-and-runbook-deployment-process.aspx</link><pubDate>Thu, 16 May 2013 17:01:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3573117</guid><dc:creator>Charles Joy [MSFT]</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/privatecloud/rsscomments.aspx?WeblogPostID=3573117</wfw:commentRss><comments>http://blogs.technet.com/b/privatecloud/archive/2013/05/16/automation-orchestrator-architecture-and-runbook-deployment-process.aspx#comments</comments><description>&lt;p&gt;Hello Readers and Viewers!&lt;/p&gt;
&lt;p&gt;Today&amp;rsquo;s post will not have a video, but it will have some very popular and hopefully informative information about some &amp;ldquo;Best Practices&amp;rdquo; around Orchestrator Architecture and Runbook Deployment.&lt;/p&gt;
&lt;p&gt;For those of you that have been following me for the past three or so years, this information may look very familiar. Well, that is because this is a &amp;ldquo;refresh&amp;rdquo; of the old &amp;ldquo;Opalis Architecture &amp;amp; Workflow Deployment Process &amp;lsquo;Best Practice Guide&amp;rsquo;&amp;rdquo; &lt;a href="http://opalis.codeplex.com/releases/view/55991" target="_blank"&gt;created and published back in November 2010&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;To date, this information (available previously as .DOCX and .PDF) has been downloaded over 2200 times! This is why I believe it deserves that refresh and promotion to an actual blog post here on Building Clouds!&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s begin&amp;hellip;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2 align="center"&gt;Orchestrator Architecture&lt;/h2&gt;
&lt;p align="left"&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/0020.image_5F00_3CC01691.png"&gt;&lt;img style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border-width: 0px;" title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/1072.image_5F00_thumb_5F00_3CFC99C6.png" alt="image" width="600" height="655" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;&lt;em&gt;Orchestrator Architecture Notes&lt;/em&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Network Connectivity between the Database(s) and connected Runbook Servers should never exceed 30ms for an optimal state of 10ms with &lt;strong&gt;zero packet loss&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Network Connectivity between connected Runbook Servers and the Managed Devices they perform work on can have a higher latency value, but standard network traffic rules still apply.
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Example: For large VHD file migrations between sites, try using FTP, instead of SMB file copy over the network.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Connectivity and Runbook Execution between &amp;ldquo;Primary&amp;rdquo; and &amp;ldquo;Remote&amp;rdquo; Production sites can be achieved via the available REST Based oData Web Service.&lt;/li&gt;
&lt;li&gt;By default the maximum concurrent Runbook Instances is set to 50 &amp;ndash; this is an extremely &amp;ldquo;safe limit&amp;rdquo; based on legacy settings. This limit can be expanded based on need and infrastructure capability. For more information about increasing this maximum, reference this &lt;a href="http://social.technet.microsoft.com/wiki/contents/articles/7786.increasing-maximum-concurrent-policy-instances-on-orchestrator-2012.aspx" target="_blank"&gt;TechNet Article&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.technet.com/b/orchestrator/archive/2012/05/04/how-to-configure-the-orchestration-console-web-site-or-the-web-service-for-load-balancing.aspx" target="_blank"&gt;Click here for more information about &amp;ldquo;How to Configure the Orchestration Console Web Site or the Web Service for Load Balancing&amp;rdquo;&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;The following are great resources as well (from the TechNet Library): &lt;a href="http://technet.microsoft.com/en-us/library/hh420377.aspx" target="_blank"&gt;Orchestrator Architecture&lt;/a&gt;, &lt;a href="http://technet.microsoft.com/en-us/library/hh420337.aspx" target="_blank"&gt;Deploying System Center 2012 &amp;ndash; Orchestrator&lt;/a&gt;, &lt;a href="http://technet.microsoft.com/en-us/library/hh674377.aspx" target="_blank"&gt;Administering System Center 2012 &amp;ndash; Orchestrator&lt;/a&gt;, and &lt;a href="http://technet.microsoft.com/en-us/library/hh237242.aspx" target="_blank"&gt;Orchestrator&lt;/a&gt; &lt;em&gt;(main landing page)&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2&gt;Runbook Deployment Process&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;A standard Software Development Lifecycle Process can be implemented/followed as far as Dev/Test to Production promotion is concerned. The following is an example process.&lt;/em&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;One or more &amp;ldquo;Dev/Test&amp;rdquo; Runbook Designers Develop and Test Runbooks outside of Production (possibly in &amp;ldquo;Dev/Test Pods&amp;rdquo;).&lt;/li&gt;
&lt;li&gt;Developed, Tested and &amp;ldquo;Sanitized&amp;rdquo; Runbook Exports to be Promoted are submitted via a Change Control System as a Change Request to a CAB (or a resource where yes/no decisions can be made based on design, process, impact, etc.)
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;NOTE: &amp;ldquo;Sanitized&amp;rdquo; refers to the need for &amp;ldquo;Dev/Test&amp;rdquo; &amp;ldquo;Global Settings/Connections&amp;rdquo; to be removed from subsequent exports of the Runbooks to be promoted.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;As a part of the Approval Process, the &amp;ldquo;Sanitized&amp;rdquo; Runbook file is imported into a Production Staging Environment (that mimics Production). Here, it is tested against a &amp;ldquo;Production Like&amp;rdquo; infrastructure.
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;NOTE: If changes are required, the Runbook should be sent back to Dev/Test and resubmitted for approval.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Upon Approval of the Change Request to Promote the Developed and Tested Runbook to Production, the file should be &amp;ldquo;Checked In&amp;rdquo; to a Source Control System (&lt;a href="http://msdn.microsoft.com/en-us/vstudio/ff637362.aspx" target="_blank"&gt;TFS&lt;/a&gt; is recommended). During this time, the existing Production Environment Runbooks should also be Exported to a file and &amp;ldquo;Checked In&amp;rdquo; to the Source Control System.&lt;/li&gt;
&lt;li&gt;Once the current environment has been backed up, and the newly Approved Runbooks have been stored, they can be scheduled for deployment (Import) to the Primary and Remote Production Environment(s).
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;NOTE: It is critical that if more than one Production Environment (Remote or otherwise) exists that each one of them is backed up and updated at the same time, to keep the environments in sync.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;&lt;em&gt;Runbook Deployment Process Notes&lt;/em&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;*.ois_export&amp;rdquo; files should be treated as &amp;ldquo;Managed Code&amp;rdquo; and should be &amp;ldquo;Checked In / Out&amp;rdquo; from a Source Control System outside Orchestrator (&lt;a href="http://msdn.microsoft.com/en-us/vstudio/ff637362.aspx" target="_blank"&gt;TFS&lt;/a&gt; is recommended).&lt;/li&gt;
&lt;li&gt;Orchestrator DOES NOT have automatic &amp;ldquo;rollback&amp;rdquo; or version history built-in. These processes are manual and require storage and management of the &amp;ldquo;*.ois_export&amp;rdquo; file generated during the change process.&lt;/li&gt;
&lt;li&gt;Global Settings/Connections are in fact global and are a part of each export, regardless of Runbook usage. It is important to be mindful of what is being exported and imported at any given time. It is advised that a &amp;ldquo;Cleanup&amp;rdquo; Orchestrator Instance is created/used to &amp;ldquo;Sanitize&amp;rdquo; the Runbooks coming from the &amp;ldquo;Dev/Test Pods&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;Runbook Changes (once implementation is in &amp;ldquo;steady-state&amp;rdquo;) should not occur often enough for the above process to be cumbersome. Because &amp;ldquo;*.ois_export&amp;rdquo; files should be treated as &amp;ldquo;Managed Code&amp;rdquo;, a Change Control Process should not be out of the question for any organization. In fact, it significantly decreases negative impact on the Orchestrator environment(s).&lt;/li&gt;
&lt;li&gt;It depends on the organization, but inclusion of ALL the Runbooks (regardless of which target environment they will execute against) may be desired in the &amp;ldquo;GOLD copy&amp;rdquo; for the Production Runbooks. Alternatively, the &amp;ldquo;GOLD copy&amp;rdquo; Production Runbooks could be broken up by &amp;ldquo;Target Execution Environment&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;The above Architecture and Runbook Deployment Process can be applied to any size Implementation. The number of Runbook Servers, Databases, Remote Environments, Dev/Test Pods, etc. can scale as desired.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Since the &lt;a href="http://opalis.codeplex.com/releases/view/55991" target="_blank"&gt;old CodePlex version&lt;/a&gt; of this documentation was such a hit, I decided to make all the documentation available as a TechNet Gallery Contribution as well!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://gallery.technet.microsoft.com/Orchestrator-Architecture-aead2e5b" target="_blank"&gt;&lt;strong&gt;&lt;em&gt;Click here for the TechNet Gallery Contribution for this Documentation!&lt;/em&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;For more information and tips/tricks about Orchestrating Service Manager, be sure to watch for blog posts in the &lt;a href="http://blogs.technet.com/b/privatecloud/archive/tags/automation+track/"&gt;Automation Track&lt;/a&gt; and IT &lt;a href="http://blogs.technet.com/b/privatecloud/archive/tags/it+service+management+track/"&gt;Service Management Track&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;enJOY!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3573117" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/System+Center/">System Center</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/Architecture/">Architecture</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/Automation/">Automation</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/System+Center+2012/">System Center 2012</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/Orchestrator/">Orchestrator</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/System+Center+2012+SP1/">System Center 2012 SP1</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/System+Center+Orchestrator/">System Center Orchestrator</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/Automation+Track/">Automation Track</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/System+Center+2012+SP1+_2D00_+Orchestrator/">System Center 2012 SP1 - Orchestrator</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/Building+Clouds/">Building Clouds</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/TechNet+Gallery+Contribution/">TechNet Gallery Contribution</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/Charles+Joy/">Charles Joy</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/System+Ceter/">System Ceter</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/building+clouds+blog/">building clouds blog</category></item><item><title>Automation-Executing a PowerShell v3 (Parallel Execution) Script in System Center Orchestrator 2012</title><link>http://blogs.technet.com/b/privatecloud/archive/2013/05/14/automation-executing-a-powershell-v3-parallel-execution-script-in-system-center-orchestrator-2012.aspx</link><pubDate>Tue, 14 May 2013 18:25:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3572637</guid><dc:creator>Jim Britt [MSFT]</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/privatecloud/rsscomments.aspx?WeblogPostID=3572637</wfw:commentRss><comments>http://blogs.technet.com/b/privatecloud/archive/2013/05/14/automation-executing-a-powershell-v3-parallel-execution-script-in-system-center-orchestrator-2012.aspx#comments</comments><description>&lt;p&gt;Hello readers!&amp;nbsp; I have a post that I think will be very interesting to those of you who have wanted to execute &lt;strong&gt;PowerShell v3 through Orchestrator&lt;/strong&gt; and have had issues.&amp;nbsp; The core of Orchestrator (if you didn&amp;rsquo;t already know) was built around an x86 PowerShell base for execution of PowerShell.&amp;nbsp; Meaning, by default if you fired up the Orchestrator Designer, built a quick and dirty Runbook to execute some PowerShell in the &amp;ldquo;Run.Net&amp;rdquo; activity that comes with the foundation activities, you would be executing that PowerShell with PowerShell v2 and in an x86 runspace.&amp;nbsp; Some of the newer activities that have been bolted on to integration packs (such as the VMM Integration Pack) have provided a PowerShell activity that provides you the ability to fire off some x64 native code and even better on the server that has the PowerShell modules you need, etc.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Well, with the introduction of PowerShell v3 and some of the coolness around parallel execution using workflow, it started us thinking about how we may combine some &lt;strong&gt;parallel&lt;/strong&gt; execution in Orchestrator leveraging PowerShell v3 and x64. This post starts with an overview of a PowerShell v3 script written to execute in parallel and finishes off with how you would integrate this example into Orchestrator.&amp;nbsp; The integration method, by the way, doesn&amp;rsquo;t limit you to only PowerShell v3, but at this&amp;nbsp; point this method is the only way to get v3 working that we&amp;rsquo;ve found.&lt;/p&gt;
&lt;h1&gt;Let&amp;rsquo;s Start with a Dissection of the Example Script&lt;/h1&gt;
&lt;p&gt;First step in this example is to provide the script we are using in our demo environment internally (SCDEMO)&amp;nbsp; and give some introduction to that.&amp;nbsp; This PowerShell script is used to &amp;ldquo;warm up&amp;rdquo; our IIS sites in our SCDEMO Clouds for demonstration purposes.&amp;nbsp; Essentially, we want to ensure that the IIS site is immediately available when we navigate to it for demonstrations to customers.&amp;nbsp; To do this, we have a URL warm up PowerShell script that is triggered as a component in our provisioning Runbook that kicks off and continues with providing access to a provisioned cloud.&amp;nbsp; We initially configured this as a script to allow for parallel execution against 1 &amp;ndash; N clouds (ex: 1 &amp;ndash; 200) and ran on a schedule.&amp;nbsp; This script executes in parallel rather than synchronous to allow us to execute the URL warm up against 200 machines (all at once in parallel) in roughly 60 seconds or so, rather than ~60 seconds * 200 URLs synchronously.&amp;nbsp; This buys us speed that we need when we are setting up a demo for a customer.&amp;nbsp; We opted to change this to a single execution script against a single URL but the example still holds true for a scheduled process. The next few sections concentrate on the chunks of the script and what they are doing.&lt;/p&gt;
&lt;h2&gt;Parameters to Get Us Started&lt;/h2&gt;
&lt;p&gt;So this section starts off by providing us the ability to either use defaults or take in parameters.&amp;nbsp; Obviously I set my script up to use defaults that work for me.&amp;nbsp; Knock yourself out customizing this for your own needs.&lt;/p&gt;
&lt;table style="width: 898px;" border="1" cellspacing="0" cellpadding="2"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="896"&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console';"&gt;&lt;span style="color: #00008b; font-size: x-small;"&gt;Param&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console';"&gt;&lt;span style="font-size: x-small;"&gt;(&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console';"&gt;&lt;span style="mso-spacerun: yes;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console';"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #00bfff;"&gt;parameter&lt;/span&gt;&lt;/span&gt;(Mandatory&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #ff4500;"&gt;$false&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;,&lt;/span&gt;&lt;/span&gt;Position&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;,&lt;/span&gt;&lt;/span&gt;HelpMessage&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #8b0000;"&gt;&amp;rdquo;Specify a base name to use ex: BlogEngine"&lt;/span&gt;&lt;/span&gt;)&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;]&lt;/span&gt;&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console';"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #008080;"&gt;String&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;]&lt;/span&gt;&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console';"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&lt;span style="color: #ff4500;"&gt;$ServerBaseName&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;=&lt;/span&gt;&lt;/span&gt;(&lt;span&gt;&lt;span style="color: #8b0000;"&gt;"BlogEngine"&lt;/span&gt;&lt;/span&gt;)&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console';"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #00bfff;"&gt;parameter&lt;/span&gt;&lt;/span&gt;(Mandatory&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #ff4500;"&gt;$false&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;,&lt;/span&gt;&lt;/span&gt;Position&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;,&lt;/span&gt;&lt;/span&gt;HelpMessage&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #8b0000;"&gt;&amp;rdquo;Specify the number of digits ex: 0000"&lt;/span&gt;&lt;/span&gt;)&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;]&lt;/span&gt;&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console';"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #008080;"&gt;String&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;]&lt;/span&gt;&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console';"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&lt;span style="color: #ff4500;"&gt;$ServerDigits&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;=&lt;/span&gt;&lt;/span&gt;(&lt;span&gt;&lt;span style="color: #8b0000;"&gt;"0000"&lt;/span&gt;&lt;/span&gt;)&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console';"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #00bfff;"&gt;parameter&lt;/span&gt;&lt;/span&gt;(Mandatory&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #ff4500;"&gt;$false&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;,&lt;/span&gt;&lt;/span&gt;Position&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #800080;"&gt;2&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;,&lt;/span&gt;&lt;/span&gt;HelpMessage&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #8b0000;"&gt;&amp;rdquo;Specify the domain name to use ex: .foo.com"&lt;/span&gt;&lt;/span&gt;)&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;]&lt;/span&gt;&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console';"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #008080;"&gt;String&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;]&lt;/span&gt;&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console';"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&lt;span style="color: #ff4500;"&gt;$ServerDomain&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;=&lt;/span&gt;&lt;/span&gt;(&lt;span&gt;&lt;span style="color: #8b0000;"&gt;".contoso.com"&lt;/span&gt;&lt;/span&gt;)&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console';"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #00bfff;"&gt;parameter&lt;/span&gt;&lt;/span&gt;(Mandatory&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #ff4500;"&gt;$false&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;,&lt;/span&gt;&lt;/span&gt;Position&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #800080;"&gt;4&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;,&lt;/span&gt;&lt;/span&gt;HelpMessage&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #8b0000;"&gt;&amp;rdquo;Specify the number of the server to start with."&lt;/span&gt;&lt;/span&gt;)&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;]&lt;/span&gt;&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console';"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #008080;"&gt;Int&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;]&lt;/span&gt;&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console';"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&lt;span style="color: #ff4500;"&gt;$ServerStart&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;=&lt;/span&gt;&lt;/span&gt;(&lt;span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;/span&gt;)&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console';"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #00bfff;"&gt;parameter&lt;/span&gt;&lt;/span&gt;(Mandatory&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #ff4500;"&gt;$false&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;,&lt;/span&gt;&lt;/span&gt;Position&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #800080;"&gt;3&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;,&lt;/span&gt;&lt;/span&gt;HelpMessage&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #8b0000;"&gt;&amp;rdquo;Specify the number of the server to end with."&lt;/span&gt;&lt;/span&gt;)&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;]&lt;/span&gt;&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console';"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #008080;"&gt;Int&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;]&lt;/span&gt;&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console';"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&lt;span style="color: #ff4500;"&gt;$ServerEnd&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;=&lt;/span&gt;&lt;/span&gt;(&lt;span&gt;&lt;span style="color: #800080;"&gt;50&lt;/span&gt;&lt;/span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&lt;span style="; mso-bidi-font-family: 'Lucida Console';"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;This script takes in as parameters&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;$ServerBaseName&lt;/strong&gt;: We have an array of machines (explained later) that all start with a base machine name such as &amp;ldquo;BlogEngine&amp;rdquo;.&amp;nbsp; We build the array with this base name and a series of numbers also explained next.&amp;nbsp; Basically, we end up with server names such as &amp;ldquo;BlogEngine0001, BlogEngine0002, BlogEngine0003, you get the idea&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;$ServerDigits&lt;/strong&gt;: This is another array building variable to allow us to go out to &amp;ldquo;4 zeros&amp;rdquo; and allow the zeros to be padding such as 0001, 0002&amp;hellip;.0010, etc.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;$ServerDomain&lt;/strong&gt;: This&amp;nbsp; provides us the &amp;ldquo;FQDN&amp;rdquo; part of our server URL&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;$ServerStart&lt;/strong&gt;:This is another array building variable.&amp;nbsp; This value is where you want to start in your series of servers using the 0000 + 1 essentially to get 0001, 0000 + 10 would be of course 0010, etc.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;$ServerEnd&lt;/strong&gt;: This value is the last server number in your list of servers.&amp;nbsp; So if you supplied 50 in this example, BlogEngine0050 would be the last server in the series.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Build the Array of Servers&lt;/h2&gt;
&lt;p&gt;Next, we need to build our array of servers from the parameters we have.&amp;nbsp; We start with initializing the &lt;strong&gt;$Servers&lt;/strong&gt; array using the &amp;ldquo;&lt;span style="; mso-bidi-font-family: 'Lucida Console';"&gt;&lt;span style="font-size: 9pt;"&gt;@()&lt;/span&gt;&lt;/span&gt;&amp;rdquo; to essentially be an empty array ready to receive data.&amp;nbsp; Then we take those parameters in a &lt;strong&gt;ForEach-Object&lt;/strong&gt; loop to build our our array list of servers.&lt;/p&gt;
&lt;table style="width: 902px;" border="1" cellspacing="0" cellpadding="2"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="900"&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console';"&gt;&lt;span style="color: #ff4500;"&gt;$Servers&lt;/span&gt;&lt;/span&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console';"&gt;&lt;span style="color: #a9a9a9;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console';"&gt;@()&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="font-size: xx-small;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console';"&gt;&lt;span style="color: #ff4500;"&gt;$ServerStart&lt;/span&gt;&lt;/span&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console';"&gt;&lt;span style="color: #a9a9a9;"&gt;..&lt;/span&gt;&lt;/span&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console';"&gt;&lt;span style="color: #ff4500;"&gt;$ServerEnd&lt;/span&gt;&lt;/span&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console';"&gt;&lt;span style="color: #a9a9a9;"&gt;|&lt;/span&gt;&lt;/span&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console';"&gt; &lt;span&gt;&lt;span style="color: #0000ff;"&gt;ForEach-Object&lt;/span&gt;&lt;/span&gt; {&lt;span&gt;&lt;span style="color: #ff4500;"&gt;$Servers&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;+=&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #8b0000;"&gt;"&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #ff4500;"&gt;$ServerBaseName&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #8b0000;"&gt;"&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;+&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #ff4500;"&gt;$_&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;.&lt;/span&gt;&lt;/span&gt;ToString(&lt;span&gt;&lt;span style="color: #8b0000;"&gt;"&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #ff4500;"&gt;$ServerDigits&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #8b0000;"&gt;"&lt;/span&gt;&lt;/span&gt;) &lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;+&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #8b0000;"&gt;"&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #ff4500;"&gt;$ServerDomain&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #8b0000;"&gt;"&lt;/span&gt;&lt;/span&gt;}&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;If we used &lt;strong&gt;1&lt;/strong&gt; as our &lt;strong&gt;$ServerStart&lt;/strong&gt; and &lt;strong&gt;4&lt;/strong&gt; as our &lt;strong&gt;$ServerEnd&lt;/strong&gt; the above would basically build a list that would look a lot like the below&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;span style="color: #0000ff;"&gt;BlogEngine0001.contoso.com &lt;br /&gt;BlogEngine0002.contoso.com &lt;br /&gt;BlogEngine0003.contoso.com &lt;br /&gt;BlogEngine0004.contoso.com &lt;br /&gt;&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;Next We Kick off the Fun and Execute the Workflow&lt;/h2&gt;
&lt;p&gt;I&amp;rsquo;ve put a &amp;ldquo;Try&amp;rdquo; and &amp;ldquo;Catch&amp;rdquo; just for completeness here.&amp;nbsp; Technically this could be executed without those.&amp;nbsp; Notice the &lt;span style="color: #9b00d3;"&gt;SilentlyContinue&lt;/span&gt; as well which is allowing us to continue without &lt;em&gt;throwing&lt;/em&gt; errors.&amp;nbsp; We&amp;rsquo;ll capture them anyway in a couple of steps from now.&amp;nbsp; The execution of the workflow happens with the &lt;span style="color: #0000ff;"&gt;Invoke-URLRequest&lt;/span&gt; with the required parameters following.&amp;nbsp; In this case we are sending it the name of the servers (&lt;strong&gt;Serverlist&lt;/strong&gt;) using our array we built (&lt;strong&gt;$Servers&lt;/strong&gt;).&amp;nbsp; Also, we kick this off twice because if a URL was &amp;ldquo;asleep&amp;rdquo; we kick this process of again to ensure it &amp;ldquo;woke up&amp;rdquo;.&lt;/p&gt;
&lt;table style="width: 904px;" border="1" cellspacing="0" cellpadding="2"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="902"&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console';"&gt;&lt;span style="color: #00008b;"&gt;try&lt;/span&gt;&lt;/span&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console';"&gt; {&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console';"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&lt;span style="color: #ff4500;"&gt;$WakeUp&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;=&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #0000ff;"&gt;Invoke-URLRequest&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #000080;"&gt;-Serverlist&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #ff4500;"&gt;$Servers&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #000080;"&gt;-ErrorAction&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #8a2be2;"&gt;SilentlyContinue&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console';"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&lt;span style="color: #ff4500;"&gt;$FinalResults&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;=&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #0000ff;"&gt;Invoke-URLRequest&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #000080;"&gt;-Serverlist&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #ff4500;"&gt;$Servers&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #000080;"&gt;-ErrorAction&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #8a2be2;"&gt;SilentlyContinue&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console';"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console';"&gt;&lt;span style="color: #00008b;"&gt;catch&lt;/span&gt;&lt;/span&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console';"&gt; {}&lt;/span&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console';"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;Main Workflow Function&lt;/h2&gt;
&lt;p&gt;Our main workflow function takes in as a parameter the server list we built (mentioned above) and as output it provides the status of the URL state.&amp;nbsp; If you notice, there is also a &lt;span style="color: #0000ff;"&gt;ForEach -Parallel&lt;/span&gt; statement which indicates that anything that is being processed in this workflow function, will do so in parallel (instead of synchronously).&amp;nbsp;&amp;nbsp; Another note is that &lt;span style="color: #c0504d;"&gt;$Workflow:myoutput&lt;/span&gt; is being used here to gather data within this workflow function and allow it to be updated within the ForEach loop and returned to the main calling script.&lt;/p&gt;
&lt;table style="width: 904px;" border="1" cellspacing="0" cellpadding="2"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="902"&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console';"&gt;&lt;span style="color: #00008b;"&gt;workflow&lt;/span&gt;&lt;/span&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console';"&gt; &lt;span&gt;&lt;span style="color: #8a2be2;"&gt;Invoke-URLRequest&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console';"&gt;&lt;span style="font-size: x-small;"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console';"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&lt;span style="color: #00008b;"&gt;param&lt;/span&gt;&lt;/span&gt;(&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #00bfff;"&gt;parameter&lt;/span&gt;&lt;/span&gt;(Mandatory&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #ff4500;"&gt;$True&lt;/span&gt;&lt;/span&gt;)&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;][&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #008080;"&gt;String&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;[]]&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #ff4500;"&gt;$Serverlist&lt;/span&gt;&lt;/span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console';"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&lt;span style="color: #ff4500;"&gt;$myoutput&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;=&lt;/span&gt;&lt;/span&gt;@()&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console';"&gt;&lt;span style="mso-spacerun: yes;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console';"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&lt;span style="color: #00008b;"&gt;ForEach&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #000080;"&gt;-Parallel&lt;/span&gt;&lt;/span&gt; (&lt;span&gt;&lt;span style="color: #ff4500;"&gt;$server&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #00008b;"&gt;in&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #ff4500;"&gt;$Serverlist&lt;/span&gt;&lt;/span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console';"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console';"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&lt;span style="color: #ff4500;"&gt;$Result&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;=&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #0000ff;"&gt;Invoke-WebRequest&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #000080;"&gt;-Uri&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #8b0000;"&gt;"&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #ff4500;"&gt;$server&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #8b0000;"&gt;"&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #000080;"&gt;-UseDefaultCredentials&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #000080;"&gt;-TimeoutSec&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #800080;"&gt;30&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #000080;"&gt;-UseBasicParsing&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console';"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&lt;span style="color: #00008b;"&gt;if&lt;/span&gt;&lt;/span&gt; ((&lt;span&gt;&lt;span style="color: #ff4500;"&gt;$Result&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;-ne&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #ff4500;"&gt;$Null&lt;/span&gt;&lt;/span&gt;) &lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;-and&lt;/span&gt;&lt;/span&gt; (&lt;span&gt;&lt;span style="color: #ff4500;"&gt;$Result&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;.&lt;/span&gt;&lt;/span&gt;links&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;].&lt;/span&gt;&lt;/span&gt;href &lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;-match&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #8b0000;"&gt;"syndication"&lt;/span&gt;&lt;/span&gt;)){ &lt;span&gt;&lt;span style="color: #ff4500;"&gt;$Alive&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;=&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #ff4500;"&gt;$True&lt;/span&gt;&lt;/span&gt; } &lt;span&gt;&lt;span style="color: #00008b;"&gt;Else&lt;/span&gt;&lt;/span&gt; { &lt;span&gt;&lt;span style="color: #ff4500;"&gt;$Alive&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;=&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #ff4500;"&gt;$False&lt;/span&gt;&lt;/span&gt; }&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console';"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&lt;span style="color: #ff4500;"&gt;$Workflow:myoutput&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;+=&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #ff4500;"&gt;$server&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;+&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #8b0000;"&gt;":"&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;+&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #ff4500;"&gt;$Alive&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console';"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console';"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&lt;span style="color: #00008b;"&gt;Return&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #ff4500;"&gt;$myoutput&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console';"&gt;}&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Key points from the above piece of code&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Parallel execution so each server we have in our list will execute at exactly the same time and return to the calling main part of the script when done&lt;/li&gt;
&lt;li&gt;For our use &amp;ndash; we&amp;rsquo;re searching for the word &amp;ldquo;syndication&amp;rdquo; since that is a word that should show up on the main site.&amp;nbsp; For you it would be different.&lt;/li&gt;
&lt;li&gt;We&amp;rsquo;re setting a value of &amp;ldquo;$True&amp;rdquo; to &amp;ldquo;$Alive&amp;rdquo; here so we can leverage that data later on.&amp;nbsp; Anything that is showing &amp;ldquo;$False&amp;rdquo; will be displayed as an issue.&lt;/li&gt;
&lt;li&gt;$MyOutput will store the ServerURL:$True or ServerURL:$False for each URL you pass it&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Example &lt;br /&gt;&lt;/strong&gt;&lt;em&gt;&lt;span style="color: #0000ff;"&gt;BlogEngine0001.contoso.com:$True &lt;br /&gt;BlogEngine0002.contoso.com:$True &lt;br /&gt;BlogEngine0003.contoso.com:$True &lt;br /&gt;BlogEngine0004.contoso.com:$False &lt;/span&gt;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Build Array for Failure Data&lt;/h2&gt;
&lt;p&gt;Since this script is returning failures only when it executes, we need to build a final array of machines that failed so we can leverage this data for alerting in Orchestrator.&amp;nbsp; The below essentially pulls any server name that didn&amp;rsquo;t return a &amp;ldquo;$True&amp;rdquo; value for being online and adds it to a failure array.&amp;nbsp; Then outputs the final results into a $OutputResults variable.&lt;/p&gt;
&lt;table style="width: 905px;" border="1" cellspacing="0" cellpadding="2"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="903"&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console';"&gt;&lt;span style="color: #ff4500;"&gt;$Failed&lt;/span&gt;&lt;/span&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console';"&gt;&lt;span style="color: #a9a9a9;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console';"&gt;@()&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console';"&gt;&lt;span style="color: #00008b;"&gt;ForEach&lt;/span&gt;&lt;/span&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console';"&gt; (&lt;span&gt;&lt;span style="color: #ff4500;"&gt;$Server&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #00008b;"&gt;in&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #ff4500;"&gt;$Servers&lt;/span&gt;&lt;/span&gt;){&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console';"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&lt;span style="color: #00008b;"&gt;if&lt;/span&gt;&lt;/span&gt; (&lt;span&gt;&lt;span style="color: #ff4500;"&gt;$FinalResults&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;-notcontains&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #ff4500;"&gt;$Server&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;+&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #8b0000;"&gt;":True"&lt;/span&gt;&lt;/span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console';"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console';"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&lt;span style="color: #ff4500;"&gt;$Failed&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;+=&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #ff4500;"&gt;$Server&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console';"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console';"&gt;&lt;span style="font-size: x-small;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console';"&gt;&lt;span style="color: #ff4500;"&gt;$OutputResults&lt;/span&gt;&lt;/span&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console';"&gt; &lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;=&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #ff4500;"&gt;$null&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console';"&gt;&lt;span style="color: #00008b;"&gt;if&lt;/span&gt;&lt;/span&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console';"&gt; (&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;!&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #ff4500;"&gt;$Failed&lt;/span&gt;&lt;/span&gt;) {&lt;span&gt;&lt;span style="color: #ff4500;"&gt;$OutputResults&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;=&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #8b0000;"&gt;"None"&lt;/span&gt;&lt;/span&gt;} &lt;span&gt;&lt;span style="color: #00008b;"&gt;else&lt;/span&gt;&lt;/span&gt; {&lt;span&gt;&lt;span style="color: #ff4500;"&gt;$Failed&lt;/span&gt;&lt;/span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="font-size: xx-small;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console';"&gt;&lt;span style="color: #ff4500;"&gt;&lt;span style="font-size: x-small;"&gt;$OutputResults&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console';"&gt;&lt;span style="color: #ff4500;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h1&gt;The Complete Script&lt;/h1&gt;
&lt;p&gt;For your viewing pleasure, I&amp;rsquo;ve provided the complete script below.&amp;nbsp; This script will also live on the TechNet Gallery as a downloadable option for those that just want to &lt;em&gt;borrow&lt;/em&gt; anything from it to build their own parallel v3 PowerShell script. Download the script from TechNet Gallery &lt;a title="http://gallery.technet.microsoft.com/PowerShell-v3-Parallel-7344d127" href="http://gallery.technet.microsoft.com/PowerShell-v3-Parallel-7344d127"&gt;&lt;span style="color: #0000ff;"&gt;&lt;strong&gt;PowerShell v3 Parallel Execution Workflow Script for URL WarmUp&lt;/strong&gt;&lt;/span&gt;&lt;/a&gt; to ensure you don&amp;rsquo;t have to deal with &amp;ldquo;copy / paste&amp;rdquo; issues.&lt;/p&gt;
&lt;table style="width: 904px;" border="1" cellspacing="0" cellpadding="2"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="902"&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console'; mso-fareast-font-family: 'Times New Roman';"&gt;&lt;span style="color: #00008b; font-size: x-small;"&gt;Param&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console'; mso-fareast-font-family: 'Times New Roman';"&gt;(&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console'; mso-fareast-font-family: 'Times New Roman';"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console'; mso-fareast-font-family: 'Times New Roman';"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #00bfff;"&gt;parameter&lt;/span&gt;&lt;/span&gt;(Mandatory&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #ff4500;"&gt;$false&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;,&lt;/span&gt;&lt;/span&gt;Position&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;,&lt;/span&gt;&lt;/span&gt;HelpMessage&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #8b0000;"&gt;&amp;rdquo;Specify a base name to use ex: BlogEngine"&lt;/span&gt;&lt;/span&gt;)&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;]&lt;/span&gt;&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console'; mso-fareast-font-family: 'Times New Roman';"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #008080;"&gt;String&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;]&lt;/span&gt;&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console'; mso-fareast-font-family: 'Times New Roman';"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&lt;span style="color: #ff4500;"&gt;$ServerBaseName&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;=&lt;/span&gt;&lt;/span&gt;(&lt;span&gt;&lt;span style="color: #8b0000;"&gt;"BlogEngine"&lt;/span&gt;&lt;/span&gt;)&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman';"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console'; mso-fareast-font-family: 'Times New Roman';"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #00bfff;"&gt;parameter&lt;/span&gt;&lt;/span&gt;(Mandatory&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #ff4500;"&gt;$false&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;,&lt;/span&gt;&lt;/span&gt;Position&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;,&lt;/span&gt;&lt;/span&gt;HelpMessage&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #8b0000;"&gt;&amp;rdquo;Specify the number of digits ex: 0000"&lt;/span&gt;&lt;/span&gt;)&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;]&lt;/span&gt;&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console'; mso-fareast-font-family: 'Times New Roman';"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #008080;"&gt;String&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;]&lt;/span&gt;&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console'; mso-fareast-font-family: 'Times New Roman';"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&lt;span style="color: #ff4500;"&gt;$ServerDigits&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;=&lt;/span&gt;&lt;/span&gt;(&lt;span&gt;&lt;span style="color: #8b0000;"&gt;"0000"&lt;/span&gt;&lt;/span&gt;)&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman';"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console'; mso-fareast-font-family: 'Times New Roman';"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #00bfff;"&gt;parameter&lt;/span&gt;&lt;/span&gt;(Mandatory&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #ff4500;"&gt;$false&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;,&lt;/span&gt;&lt;/span&gt;Position&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #800080;"&gt;2&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;,&lt;/span&gt;&lt;/span&gt;HelpMessage&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #8b0000;"&gt;&amp;rdquo;Specify the domain name to use ex: .foo.com"&lt;/span&gt;&lt;/span&gt;)&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;]&lt;/span&gt;&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console'; mso-fareast-font-family: 'Times New Roman';"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #008080;"&gt;String&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;]&lt;/span&gt;&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console'; mso-fareast-font-family: 'Times New Roman';"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&lt;span style="color: #ff4500;"&gt;$ServerDomain&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;=&lt;/span&gt;&lt;/span&gt;(&lt;span&gt;&lt;span style="color: #8b0000;"&gt;".contoso.com"&lt;/span&gt;&lt;/span&gt;)&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman';"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console'; mso-fareast-font-family: 'Times New Roman';"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #00bfff;"&gt;parameter&lt;/span&gt;&lt;/span&gt;(Mandatory&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #ff4500;"&gt;$false&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;,&lt;/span&gt;&lt;/span&gt;Position&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #800080;"&gt;4&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;,&lt;/span&gt;&lt;/span&gt;HelpMessage&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #8b0000;"&gt;&amp;rdquo;Specify the number of the server to start with."&lt;/span&gt;&lt;/span&gt;)&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;]&lt;/span&gt;&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console'; mso-fareast-font-family: 'Times New Roman';"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #008080;"&gt;Int&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;]&lt;/span&gt;&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console'; mso-fareast-font-family: 'Times New Roman';"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&lt;span style="color: #ff4500;"&gt;$ServerStart&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;=&lt;/span&gt;&lt;/span&gt;(&lt;span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;/span&gt;)&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman';"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console'; mso-fareast-font-family: 'Times New Roman';"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #00bfff;"&gt;parameter&lt;/span&gt;&lt;/span&gt;(Mandatory&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #ff4500;"&gt;$false&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;,&lt;/span&gt;&lt;/span&gt;Position&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #800080;"&gt;3&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;,&lt;/span&gt;&lt;/span&gt;HelpMessage&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #8b0000;"&gt;&amp;rdquo;Specify the number of the server to end with."&lt;/span&gt;&lt;/span&gt;)&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;]&lt;/span&gt;&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console'; mso-fareast-font-family: 'Times New Roman';"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #008080;"&gt;Int&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;]&lt;/span&gt;&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console'; mso-fareast-font-family: 'Times New Roman';"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&lt;span style="color: #ff4500;"&gt;$ServerEnd&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;=&lt;/span&gt;&lt;/span&gt;(&lt;span&gt;&lt;span style="color: #800080;"&gt;50&lt;/span&gt;&lt;/span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman';"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console'; mso-fareast-font-family: 'Times New Roman';"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console'; mso-fareast-font-family: 'Times New Roman';"&gt;&lt;span style="color: #00008b;"&gt;workflow&lt;/span&gt;&lt;/span&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console'; mso-fareast-font-family: 'Times New Roman';"&gt; &lt;span&gt;&lt;span style="color: #8a2be2;"&gt;Invoke-URLRequest&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console'; mso-fareast-font-family: 'Times New Roman';"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console'; mso-fareast-font-family: 'Times New Roman';"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&lt;span style="color: #00008b;"&gt;param&lt;/span&gt;&lt;/span&gt;(&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #00bfff;"&gt;parameter&lt;/span&gt;&lt;/span&gt;(Mandatory&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #ff4500;"&gt;$True&lt;/span&gt;&lt;/span&gt;)&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;][&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #008080;"&gt;String&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;[]]&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #ff4500;"&gt;$Serverlist&lt;/span&gt;&lt;/span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman';"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console'; mso-fareast-font-family: 'Times New Roman';"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&lt;span style="color: #ff4500;"&gt;$myoutput&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;=&lt;/span&gt;&lt;/span&gt;@()&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console'; mso-fareast-font-family: 'Times New Roman';"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console'; mso-fareast-font-family: 'Times New Roman';"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&lt;span style="color: #00008b;"&gt;ForEach&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #000080;"&gt;-Parallel&lt;/span&gt;&lt;/span&gt; (&lt;span&gt;&lt;span style="color: #ff4500;"&gt;$server&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #00008b;"&gt;in&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #ff4500;"&gt;$Serverlist&lt;/span&gt;&lt;/span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console'; mso-fareast-font-family: 'Times New Roman';"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console'; mso-fareast-font-family: 'Times New Roman';"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&lt;span style="color: #ff4500;"&gt;$Result&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;=&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #0000ff;"&gt;Invoke-WebRequest&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #000080;"&gt;-Uri&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #8b0000;"&gt;"&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #ff4500;"&gt;$server&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #8b0000;"&gt;"&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #000080;"&gt;-UseDefaultCredentials&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #000080;"&gt;-TimeoutSec&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #800080;"&gt;30&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #000080;"&gt;-UseBasicParsing&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console'; mso-fareast-font-family: 'Times New Roman';"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&lt;span style="color: #00008b;"&gt;if&lt;/span&gt;&lt;/span&gt; ((&lt;span&gt;&lt;span style="color: #ff4500;"&gt;$Result&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;-ne&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #ff4500;"&gt;$Null&lt;/span&gt;&lt;/span&gt;) &lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;-and&lt;/span&gt;&lt;/span&gt; (&lt;span&gt;&lt;span style="color: #ff4500;"&gt;$Result&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;.&lt;/span&gt;&lt;/span&gt;links&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;].&lt;/span&gt;&lt;/span&gt;href &lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;-match&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #8b0000;"&gt;"syndication"&lt;/span&gt;&lt;/span&gt;)){ &lt;span&gt;&lt;span style="color: #ff4500;"&gt;$Alive&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;=&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #ff4500;"&gt;$True&lt;/span&gt;&lt;/span&gt; } &lt;span&gt;&lt;span style="color: #00008b;"&gt;Else&lt;/span&gt;&lt;/span&gt; { &lt;span&gt;&lt;span style="color: #ff4500;"&gt;$Alive&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;=&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #ff4500;"&gt;$False&lt;/span&gt;&lt;/span&gt; }&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console'; mso-fareast-font-family: 'Times New Roman';"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&lt;span style="color: #ff4500;"&gt;$Workflow:myoutput&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;+=&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #ff4500;"&gt;$server&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;+&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #8b0000;"&gt;":"&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;+&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #ff4500;"&gt;$Alive&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console'; mso-fareast-font-family: 'Times New Roman';"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console'; mso-fareast-font-family: 'Times New Roman';"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&lt;span style="color: #00008b;"&gt;Return&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #ff4500;"&gt;$myoutput&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console'; mso-fareast-font-family: 'Times New Roman';"&gt;} &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman';"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console'; mso-fareast-font-family: 'Times New Roman';"&gt;&lt;span style="color: #ff4500;"&gt;$Servers&lt;/span&gt;&lt;/span&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console'; mso-fareast-font-family: 'Times New Roman';"&gt;&lt;span style="color: #a9a9a9;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console'; mso-fareast-font-family: 'Times New Roman';"&gt;@()&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console'; mso-fareast-font-family: 'Times New Roman';"&gt;&lt;span style="color: #ff4500;"&gt;$ServerStart&lt;/span&gt;&lt;/span&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console'; mso-fareast-font-family: 'Times New Roman';"&gt;&lt;span style="color: #a9a9a9;"&gt;..&lt;/span&gt;&lt;/span&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console'; mso-fareast-font-family: 'Times New Roman';"&gt;&lt;span style="color: #ff4500;"&gt;$ServerEnd&lt;/span&gt;&lt;/span&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console'; mso-fareast-font-family: 'Times New Roman';"&gt;&lt;span style="color: #a9a9a9;"&gt;|&lt;/span&gt;&lt;/span&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console'; mso-fareast-font-family: 'Times New Roman';"&gt; &lt;span&gt;&lt;span style="color: #0000ff;"&gt;ForEach-Object&lt;/span&gt;&lt;/span&gt; {&lt;span&gt;&lt;span style="color: #ff4500;"&gt;$Servers&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;+=&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #8b0000;"&gt;"&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #ff4500;"&gt;$ServerBaseName&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #8b0000;"&gt;"&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;+&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #ff4500;"&gt;$_&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;.&lt;/span&gt;&lt;/span&gt;ToString(&lt;span&gt;&lt;span style="color: #8b0000;"&gt;"&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #ff4500;"&gt;$ServerDigits&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #8b0000;"&gt;"&lt;/span&gt;&lt;/span&gt;) &lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;+&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #8b0000;"&gt;"&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #ff4500;"&gt;$ServerDomain&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #8b0000;"&gt;"&lt;/span&gt;&lt;/span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman';"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console'; mso-fareast-font-family: 'Times New Roman';"&gt;&lt;span style="color: #00008b;"&gt;try&lt;/span&gt;&lt;/span&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console'; mso-fareast-font-family: 'Times New Roman';"&gt; {&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console'; mso-fareast-font-family: 'Times New Roman';"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&lt;span style="color: #ff4500;"&gt;$WakeUp&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;=&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #0000ff;"&gt;Invoke-URLRequest&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #000080;"&gt;-Serverlist&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #ff4500;"&gt;$Servers&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #000080;"&gt;-ErrorAction&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #8a2be2;"&gt;SilentlyContinue&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console'; mso-fareast-font-family: 'Times New Roman';"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&lt;span style="color: #ff4500;"&gt;$FinalResults&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;=&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #0000ff;"&gt;Invoke-URLRequest&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #000080;"&gt;-Serverlist&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #ff4500;"&gt;$Servers&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #000080;"&gt;-ErrorAction&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #8a2be2;"&gt;SilentlyContinue&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console'; mso-fareast-font-family: 'Times New Roman';"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console'; mso-fareast-font-family: 'Times New Roman';"&gt;&lt;span style="color: #00008b;"&gt;catch&lt;/span&gt;&lt;/span&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console'; mso-fareast-font-family: 'Times New Roman';"&gt; {}&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman';"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console'; mso-fareast-font-family: 'Times New Roman';"&gt;&lt;span style="color: #ff4500;"&gt;$Failed&lt;/span&gt;&lt;/span&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console'; mso-fareast-font-family: 'Times New Roman';"&gt;&lt;span style="color: #a9a9a9;"&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console'; mso-fareast-font-family: 'Times New Roman';"&gt;@()&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console'; mso-fareast-font-family: 'Times New Roman';"&gt;&lt;span style="color: #00008b;"&gt;ForEach&lt;/span&gt;&lt;/span&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console'; mso-fareast-font-family: 'Times New Roman';"&gt; (&lt;span&gt;&lt;span style="color: #ff4500;"&gt;$Server&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #00008b;"&gt;in&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #ff4500;"&gt;$Servers&lt;/span&gt;&lt;/span&gt;){&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console'; mso-fareast-font-family: 'Times New Roman';"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&lt;span style="color: #00008b;"&gt;if&lt;/span&gt;&lt;/span&gt; (&lt;span&gt;&lt;span style="color: #ff4500;"&gt;$FinalResults&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;-notcontains&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #ff4500;"&gt;$Server&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;+&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #8b0000;"&gt;":True"&lt;/span&gt;&lt;/span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console'; mso-fareast-font-family: 'Times New Roman';"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console'; mso-fareast-font-family: 'Times New Roman';"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span&gt;&lt;span style="color: #ff4500;"&gt;$Failed&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;+=&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #ff4500;"&gt;$Server&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console'; mso-fareast-font-family: 'Times New Roman';"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console'; mso-fareast-font-family: 'Times New Roman';"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="; mso-bidi-font-family: 'Times New Roman'; mso-fareast-font-family: 'Times New Roman';"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console'; mso-fareast-font-family: 'Times New Roman';"&gt;&lt;span style="color: #ff4500;"&gt;$OutputResults&lt;/span&gt;&lt;/span&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console'; mso-fareast-font-family: 'Times New Roman';"&gt; &lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;=&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #ff4500;"&gt;$null&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="background: white; margin: 0in 0in 0pt; line-height: normal; mso-layout-grid-align: none;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console'; mso-fareast-font-family: 'Times New Roman';"&gt;&lt;span style="color: #00008b;"&gt;if&lt;/span&gt;&lt;/span&gt;&lt;span style="; mso-bidi-font-family: 'Lucida Console'; mso-fareast-font-family: 'Times New Roman';"&gt; (&lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;!&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: #ff4500;"&gt;$Failed&lt;/span&gt;&lt;/span&gt;) {&lt;span&gt;&lt;span style="color: #ff4500;"&gt;$OutputResults&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #a9a9a9;"&gt;=&lt;/span&gt;&lt;/span&gt; &lt;span&gt;&lt;span style="color: #8b0000;"&gt;"None"&lt;/span&gt;&lt;/span&gt;} &lt;span&gt;&lt;span style="color: #00008b;"&gt;else&lt;/span&gt;&lt;/span&gt; {&lt;span&gt;&lt;span style="color: #ff4500;"&gt;$Failed&lt;/span&gt;&lt;/span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;span style="line-height: 9pt; ; mso-bidi-font-family: 'Lucida Console'; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: en-us; mso-fareast-language: en-us; mso-bidi-language: ar-sa;"&gt;&lt;span style="color: #ff4500; font-size: x-small;"&gt;$OutputResults&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h1&gt;Integration With Orchestrator&lt;/h1&gt;
&lt;p&gt;Now that I&amp;rsquo;ve gone through this script in a bit of detail to give you an idea of &amp;ldquo;what is doing what&amp;rdquo;, how do we get it integrated into Orchestrator to leverage in your IT process automation?&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Basic Runbook Example&lt;/h2&gt;
&lt;p&gt;To keep this simple, I&amp;rsquo;ll illustrate 2 activities&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Simple initiate activity (no parameters just something to stub out the process) &lt;br /&gt;&lt;strong&gt;Note&amp;nbsp;&amp;nbsp; &lt;/strong&gt;This could contain all the published data you want to send to the &amp;ldquo;Warm Up BlogEngine URL&amp;rdquo; activity &lt;/li&gt;
&lt;li&gt;Warm Up BlogEngine URL activity (Run Program) shown next&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/1185.image_5F00_5D3F98EB.png"&gt;&lt;img style="border-width: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/1108.image_5F00_thumb_5F00_43D795B1.png" alt="image" width="233" height="99" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;PowerShell and Run Program to allow for PowerShell v3 execution&lt;/h2&gt;
&lt;p&gt;Below we basically call PowerShell directly via the &lt;strong&gt;Command execution&lt;/strong&gt; option in a &lt;strong&gt;Run Program &lt;/strong&gt;activity using a CMD.EXE /c switch.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/4745.image_5F00_51A9DBAC.png"&gt;&lt;img style="border-width: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/6404.image_5F00_thumb_5F00_4A8A9F34.png" alt="image" width="668" height="460" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Expanded view&lt;/strong&gt; (by right clicking on the command window and left clicking &lt;strong&gt;Expand&lt;/strong&gt;)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/4341.image_5F00_6A3978FC.png"&gt;&lt;img style="border-width: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/6087.image_5F00_thumb_5F00_780BBEF7.png" alt="image" width="673" height="112" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Breaking this down we are doing the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Computer&lt;/strong&gt;: We&amp;rsquo;re using Published Data for the value of the current Runbook Server that is executing this Runbook.&amp;nbsp; This is important since the script needs to exist on this server (and all Runbook Servers that will be leveraged).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Command&lt;/strong&gt;: What we are actually executing here
&lt;ul&gt;
&lt;li&gt;CMD.exe /c to execute a command window&lt;/li&gt;
&lt;li&gt;A &amp;ldquo;|&amp;rdquo; or pipe to add a command to run&lt;/li&gt;
&lt;li&gt;We&amp;rsquo;re using a variable to define the PowerShell exe location (Example: &lt;strong&gt;C:\Windows\system32\WindowsPowerShell\v1.0\powershell.exe&lt;/strong&gt;)&lt;/li&gt;
&lt;li&gt;-c .\scriptfile.PS1 to indicate we are going to execute a dot sourced script from the current working directory&lt;/li&gt;
&lt;li&gt;Providing the required parameters for our PowerShell script (ServerStart and ServerEnd)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Working&lt;/strong&gt; &lt;strong&gt;Folder&lt;/strong&gt;: We are also using a variable here to specify location of scripts (Example: &lt;strong&gt;c:\Scripts&lt;/strong&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Essentially the above is in the format of the below.&lt;/p&gt;
&lt;p&gt;&lt;span style="color: #0000ff;"&gt;&lt;em&gt;cmd.exe /c | powershell.exe -c .\scriptfile.ps1 -ServerStart 1 -ServerEnd 200&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;Handling Failures&lt;/h2&gt;
&lt;p&gt;As a final piece to this, I said above that we are capturing what machines have a &amp;ldquo;$False&amp;rdquo; for "$Alive&amp;rdquo;.&amp;nbsp; Since we may want to do something with that piece of information, one way to control flow is with a &lt;strong&gt;Link&lt;/strong&gt; condition following the activity.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/4834.image_5F00_33CB57AB.png"&gt;&lt;img style="border-width: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/5023.image_5F00_thumb_5F00_7EBEC87A.png" alt="image" width="236" height="216" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;To throw an error and also continue on, we can specify (on the &lt;span style="color: #ff0000;"&gt;red&lt;/span&gt; link shown above) that when &lt;strong&gt;Pure Output&lt;/strong&gt; from the &lt;strong&gt;Run Program activity&lt;/strong&gt; &lt;em&gt;does not contain&lt;/em&gt; &lt;strong&gt;None&lt;/strong&gt;, let&amp;rsquo;s do something special.&amp;nbsp; That something special in our case is sending an email with the names of servers that are having an issue.&amp;nbsp; In your case it could be a different action and set of results of course.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/4265.image_5F00_0167842C.png"&gt;&lt;img style="border-width: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/7411.image_5F00_thumb_5F00_7A4847B3.png" alt="image" width="596" height="411" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;&amp;nbsp;&lt;/h1&gt;
&lt;h1&gt;Supporting URLs for PowerShell Workflow&lt;/h1&gt;
&lt;p&gt;In case you want to read up more on PowerShell Workflow in v3 I&amp;rsquo;m providing a handful of links below.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Use PowerShell Workflow to Ping Computers in Parallel&lt;/strong&gt;: &lt;a title="http://blogs.technet.com/b/heyscriptingguy/archive/2012/11/20/use-powershell-workflow-to-ping-computers-in-parallel.aspx" href="http://blogs.technet.com/b/heyscriptingguy/archive/2012/11/20/use-powershell-workflow-to-ping-computers-in-parallel.aspx"&gt;&lt;span style="color: #0000ff;"&gt;http://blogs.technet.com/b/heyscriptingguy/archive/2012/11/20/use-powershell-workflow-to-ping-computers-in-parallel.aspx&lt;/span&gt;&lt;/a&gt; &lt;br /&gt;&lt;strong&gt;PowerShell Workflows: The Basics&lt;/strong&gt;: &lt;a title="http://blogs.technet.com/b/heyscriptingguy/archive/2012/12/26/powershell-workflows-the-basics.aspx" href="http://blogs.technet.com/b/heyscriptingguy/archive/2012/12/26/powershell-workflows-the-basics.aspx"&gt;&lt;span style="color: #0000ff;"&gt;http://blogs.technet.com/b/heyscriptingguy/archive/2012/12/26/powershell-workflows-the-basics.aspx&lt;/span&gt;&lt;/a&gt; &lt;br /&gt;&lt;strong&gt;Writing a Script Workflow&lt;/strong&gt;: &lt;a title="http://technet.microsoft.com/en-us/library/jj574157.aspx" href="http://technet.microsoft.com/en-us/library/jj574157.aspx"&gt;&lt;span style="color: #0000ff;"&gt;http://technet.microsoft.com/en-us/library/jj574157.aspx&lt;/span&gt;&lt;/a&gt; &lt;br /&gt;&lt;strong&gt;TechNet Gallery Location for Script&lt;/strong&gt;: &lt;a title="http://gallery.technet.microsoft.com/PowerShell-v3-Parallel-7344d127" href="http://gallery.technet.microsoft.com/PowerShell-v3-Parallel-7344d127"&gt;&lt;span style="color: #0000ff;"&gt;PowerShell v3 Parallel Execution Workflow Script for URL WarmUp&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;That does it for this post.&amp;nbsp; If you have any questions, don&amp;rsquo;t hesitate to comment below.&amp;nbsp; Also, in the spirit of this blog and keeping this as an open discussion, feel free to post other options that have worked for you.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Till next time,&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Happy Automating! &lt;img class="wlEmoticon wlEmoticon-openmouthedsmile" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/5367.wlEmoticon_2D00_openmouthedsmile_5F00_3A122E39.png" alt="Open-mouthed smile" /&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;table style="width: 560px;" border="0" cellspacing="0" cellpadding="2"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="560"&gt;
&lt;p align="center"&gt;&lt;strong&gt;&lt;span style="font-size: medium;"&gt;Go Social with Building Clouds!&lt;/span&gt;&lt;/strong&gt; &lt;br /&gt;&lt;a href="http://blogs.technet.com/b/privatecloud/"&gt;&lt;strong&gt;Building Clouds blog&lt;/strong&gt;&lt;/a&gt; &lt;br /&gt;&lt;a href="http://www.facebook.com/privatecloudarch"&gt;&lt;strong&gt;Private Cloud Architecture Facebook page&lt;/strong&gt;&lt;/a&gt; &lt;br /&gt;&lt;a href="http://twitter.com/PrivateCloudMS"&gt;&lt;strong&gt;Private Cloud Architecture Twitter account&lt;/strong&gt;&lt;/a&gt; &lt;br /&gt;&lt;a href="https://twitter.com/Building_Clouds"&gt;&lt;strong&gt;Building Clouds Twitter account&lt;/strong&gt;&lt;/a&gt; &lt;br /&gt;&lt;a href="http://www.linkedin.com/groups/microsoft-private-cloud-3948950"&gt;&lt;strong&gt;Private Cloud Architecture LinkedIn Group&lt;/strong&gt;&lt;/a&gt; &lt;br /&gt;&lt;a href="https://plus.google.com/communities/107741624847063447690"&gt;&lt;strong&gt;Building Clouds Google+ Community&lt;/strong&gt;&lt;/a&gt; &lt;br /&gt;&lt;a href="http://social.technet.microsoft.com/Forums/en-US/category/cloudcomputing"&gt;&lt;strong&gt;Cloud TechNet forums&lt;/strong&gt;&lt;/a&gt; &lt;br /&gt;&lt;a href="http://www.technet.com/cloud/private-cloud"&gt;&lt;strong&gt;TechNet Cloud and Datacenter Solutions Site&lt;/strong&gt;&lt;/a&gt; &lt;br /&gt;&lt;a href="http://social.technet.microsoft.com/wiki/search/searchresults.aspx?q=private+cloud"&gt;&lt;strong&gt;Cloud and Datacenter Solutions on the TechNet Wiki&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3572637" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/Automation/">Automation</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/System+Center+2012/">System Center 2012</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/PowerShell/">PowerShell</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/data+center/">data center</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/System+Center+2012+SP1/">System Center 2012 SP1</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/Automation+Track/">Automation Track</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/System+Center+2012+SP1+_2D00_+Orchestrator/">System Center 2012 SP1 - Orchestrator</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/Building+Clouds/">Building Clouds</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/TechNet+Gallery+Contribution/">TechNet Gallery Contribution</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/PowerShell+Workflow/">PowerShell Workflow</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/Powershell+Script/">Powershell Script</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/PowerShell+3-0/">PowerShell 3.0</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/Jim+Britt/">Jim Britt</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/Runbook/">Runbook</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/building+clouds+blog/">building clouds blog</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/datacenter/">datacenter</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/Run+Books/">Run Books</category></item><item><title>Secure the Private Cloud with Hyper-V PowerShell - Part 2</title><link>http://blogs.technet.com/b/privatecloud/archive/2013/05/14/security-series-using-powershell-to-protect-your-private-cloud-infrastructure-part-2.aspx</link><pubDate>Tue, 14 May 2013 16:12:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3572621</guid><dc:creator>Thomas W Shinder - MSFT</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/privatecloud/rsscomments.aspx?WeblogPostID=3572621</wfw:commentRss><comments>http://blogs.technet.com/b/privatecloud/archive/2013/05/14/security-series-using-powershell-to-protect-your-private-cloud-infrastructure-part-2.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/2451.image_5F00_43714980.png"&gt;&lt;img title="Dr. Tom Shinder" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/5584.image_5F00_thumb_5F00_09820694.png" alt="Dr. Tom Shinder" width="100" height="119" align="left" border="0" /&gt;&lt;/a&gt;In our first blog of this series, &lt;a href="http://blogs.technet.com/b/privatecloud/archive/2013/04/26/security-series-using-powershell-to-protect-your-private-cloud-infrastructure-part-1.aspx"&gt;Using PowerShell to Protect Your Private Cloud Infrastructure&lt;/a&gt;, we defined the &lt;a href="http://blogs.technet.com/b/privatecloud/"&gt;&lt;img title="Building Clouds Blog" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/6557.image_5F00_6C91D414.png" alt="Building Clouds Blog" width="85" height="86" align="right" border="0" /&gt;&lt;/a&gt;essential characteristics of cloud computing, briefly discussed some cloud security challenges, and started exploring network protection by using platform capabilities in Windows Server 2012. The first network security scenario we described covered protection against eavesdropping attacks by leveraging the SMB Encryption feature available in Windows Server 2012. In this blog, we will discuss how to protect a private cloud infrastructure against rogue services.&lt;/p&gt;
&lt;h4&gt;Scenario 2 &amp;ndash; Protecting against rogue services&lt;a href="http://technet.microsoft.com/en-us/cloud/private-cloud"&gt;&lt;img title="Cloud and Datacenter Solutions Hub" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/5531.image_5F00_6953291E.png" alt="Cloud and Datacenter Solutions Hub" width="240" height="82" align="right" border="0" /&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;As described in the paper &lt;a href="http://blogs.technet.com/b/privatecloud/archive/2013/03/12/leveraging-windows-server-2012-capabilities-to-address-private-cloud-security-concerns-part-2.aspx"&gt;Leveraging Windows Server 2012 Capabilities to Address Private Cloud Security Concerns &amp;ndash; Part 2&lt;/a&gt;, you need to be concerned about protecting tenants against rogue services that could interrupt their workload. Because network isolation is a fundamental requirement for a private cloud, many times this concern is already mitigated for cross-tenant communication; however, traffic within the same tenant network is still vulnerable to this type of attack if nothing is done.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/4670.image_5F00_0B40DB74.png"&gt;&lt;img title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/7331.image_5F00_thumb_5F00_4A325C0F.png" alt="image" width="140" height="204" align="right" border="0" /&gt;&lt;/a&gt;Traffic that belongs to the same tenant network can initially be viewed as &amp;ldquo;trusted&amp;rdquo;; however, as a security professional you should never trust any traffic, even if it comes from the your own corporate network. The risk that an internal threat will provision a service that will affect the entire tenant&amp;rsquo;s network is something that should be addressed from the private cloud infrastructure perspective. One classic example of potential network disruption is a rogue DHCP server that sends leases for bogus IP addresses on the tenant&amp;rsquo;s network.&lt;/p&gt;
&lt;p&gt;One great new feature in Windows Server 2012 that can be used to mitigate this scenario is DHCP Guard. The Hyper-V Virtual Switch can use this feature to block DHCP offers from virtual machines that were not authorized to distribute IP addresses.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;&amp;nbsp; This is a feature of the Hyper-V Virtual Switch, so don&amp;rsquo;t get confused when we say &amp;ldquo;authorized.&amp;rdquo; This is not the same as DHCP Authorization in Active Directory. DHCP Guard does not need Active Directory, and it is implemented on the virtual switch level.&lt;/p&gt;
&lt;p&gt;To demonstrate this scenario, we will use the configuration that follows.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-18/2553.hsg_2D00_4_2D00_12_2D00_13_2D00_1.png"&gt;&lt;img title="Image of flow chart" src="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-18/2553.hsg_2D00_4_2D00_12_2D00_13_2D00_1.png" alt="Image of flow chart" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Scenario definition&lt;/strong&gt;: Contoso, Ltd. has a cloud infrastructure, and as part of the security policy for their private cloud they need to prevent rogue DHCP servers from distributing IP addresses on their network.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Scenario constraint:&lt;/strong&gt; The plan is to implement this capability throughout the entire cloud infrastructure, but for now they are going to deploy only on the Financial Tenant virtual machine (the Red virtual machine in the previous image).&lt;/p&gt;
&lt;p&gt;To use DHCP Guard, you need to select the virtual machines that must have this feature enabled. You can use the &lt;strong&gt;Get-VM&lt;/strong&gt; command to visualize all your virtual machiness as shown here:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-18/1256.hsg_2D00_4_2D00_12_2D00_13_2D00_2.png"&gt;&lt;img title="Image of command output" src="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-18/1256.hsg_2D00_4_2D00_12_2D00_13_2D00_2.png" alt="Image of command output" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tip&lt;/strong&gt;&amp;nbsp;&amp;nbsp; In a multitenant environment, you might want to use a name suffix that can identify the tenant. For example, &amp;ldquo;[Finance] Windows 8&amp;rdquo;. This will help you query the virtual machine&amp;rsquo;s name by using the command &lt;strong&gt;Get-VM *finance*&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;It is important to note that the DHCP Guard feature is disabled by default, which means that every virtual machine you create will have this functionality disabled. You can use the command &lt;strong&gt;Get-VMNetworkAdapter&lt;/strong&gt; to obtain this information shown here:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-18/8688.hsg_2D00_4_2D00_12_2D00_13_2D00_3.png"&gt;&lt;img title="Image of command output" src="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-18/8688.hsg_2D00_4_2D00_12_2D00_13_2D00_3.png" alt="Image of command output" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You can retrieve information about only this setting by using &lt;strong&gt;Get-VMNetworkAdapter &amp;ndash;VMName RogueDHCP | Format-List DHCPGuard&lt;/strong&gt;.&lt;strong&gt; &lt;/strong&gt;The result of this command is shown here.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-18/3124.hsg_2D00_4_2D00_12_2D00_13_2D00_4.png"&gt;&lt;img title="Image of command output" src="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-18/3124.hsg_2D00_4_2D00_12_2D00_13_2D00_4.png" alt="Image of command output" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In a private cloud infrastructure, you (as an administrator) should be aware of which virtual machines will be provisioned to be a DHCP server (which in almost all cases is likely to be none of them because tenants should not be providing infrastructure services). Therefore, the correct assumption is that all virtual machines should have this feature on except the ones that will act as a DHCP server.&lt;/p&gt;
&lt;p&gt;Unfortunately, it is not possible to change the default setting in Hyper-V to force all virtual machines that you create to have DHCP Guard enabled. You need to create the virtual machine and then use the following command to enable it.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-18/1565.hsg_2D00_4_2D00_12_2D00_13_2D00_5.png"&gt;&lt;img title="Image of command output" src="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-18/1565.hsg_2D00_4_2D00_12_2D00_13_2D00_5.png" alt="Image of command output" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In this blog of a three-part series, we discussed a scenario where the private cloud administrator wants to protect his cloud infrastructure against rogue DHCP attacks. The next blog in this series will discuss protection against MAC Spoofing and Router Advertisement attacks.&lt;/p&gt;
&lt;p&gt;See you next time!&lt;/p&gt;
&lt;p&gt;~Yuri Diogenes, senior technical writer, SCD iX Solutions Group &lt;br /&gt;Twitter: &lt;a href="http://www.twitter.com/yuridiogenes"&gt;@YuriDiogenes&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tom Shinder &lt;br /&gt;&lt;/strong&gt;&lt;a href="mailto:tomsh@microsoft.com"&gt;&lt;strong&gt;tomsh@microsoft.com&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt; &lt;br /&gt;Principal Knowledge Engineer, SCD iX Solutions Group &lt;br /&gt;&lt;/strong&gt;&lt;strong&gt;Follow me on Twitter: &lt;/strong&gt;&lt;a href="http://twitter.com/tshinder"&gt;&lt;strong&gt;http://twitter.com/tshinder&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt; &lt;br /&gt;Facebook: &lt;/strong&gt;&lt;a href="http://www.facebook.com/tshinder"&gt;&lt;strong&gt;http://www.facebook.com/tshinder&lt;/strong&gt;&lt;/a&gt; &lt;br /&gt;&lt;a href="http://www.technet.com/cloud/private-cloud"&gt;&lt;img title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/8640.image_5F00_0FDB3BAD.png" alt="image" width="240" height="20" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;table style="width: 560px;" border="0" cellspacing="0" cellpadding="2"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="560"&gt;
&lt;p align="center"&gt;&lt;strong&gt;&lt;span style="font-size: medium;"&gt;Go Social with Building Clouds!&lt;/span&gt;&lt;/strong&gt; &lt;br /&gt;&lt;a href="http://blogs.technet.com/b/privatecloud/"&gt;&lt;strong&gt;Building Clouds blog&lt;/strong&gt;&lt;/a&gt; &lt;br /&gt;&lt;a href="http://www.facebook.com/privatecloudarch"&gt;&lt;strong&gt;Private Cloud Architecture Facebook page&lt;/strong&gt;&lt;/a&gt; &lt;br /&gt;&lt;a href="http://twitter.com/PrivateCloudMS"&gt;&lt;strong&gt;Private Cloud Architecture Twitter account&lt;/strong&gt;&lt;/a&gt; &lt;br /&gt;&lt;a href="https://twitter.com/Building_Clouds"&gt;&lt;strong&gt;Building Clouds Twitter account&lt;/strong&gt;&lt;/a&gt; &lt;br /&gt;&lt;a href="http://www.linkedin.com/groups/microsoft-private-cloud-3948950"&gt;&lt;strong&gt;Private Cloud Architecture LinkedIn Group&lt;/strong&gt;&lt;/a&gt; &lt;br /&gt;&lt;a href="https://plus.google.com/communities/107741624847063447690"&gt;&lt;strong&gt;Building Clouds Google+ Community&lt;/strong&gt;&lt;/a&gt; &lt;br /&gt;&lt;a href="http://social.technet.microsoft.com/Forums/en-US/category/cloudcomputing"&gt;&lt;strong&gt;Cloud TechNet forums&lt;/strong&gt;&lt;/a&gt; &lt;br /&gt;&lt;a href="http://www.technet.com/cloud/private-cloud"&gt;&lt;strong&gt;TechNet Cloud and Datacenter Solutions Site&lt;/strong&gt;&lt;/a&gt; &lt;br /&gt;&lt;a href="http://social.technet.microsoft.com/wiki/search/searchresults.aspx?q=private+cloud"&gt;&lt;strong&gt;Cloud and Datacenter Solutions on the TechNet Wiki&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3572621" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/Private+Cloud/">Private Cloud</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/Fabric/">Fabric</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/Cloud/">Cloud</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/Tom+Shinder/">Tom Shinder</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/DHCP/">DHCP</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/Yuri+Diogenes/">Yuri Diogenes</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/PowerShell/">PowerShell</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/Hyper_2D00_V/">Hyper-V</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/Infrastructure/">Infrastructure</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/Port+ACLs/">Port ACLs</category></item><item><title>Windows Azure Virtual Networks and IKE Versions</title><link>http://blogs.technet.com/b/privatecloud/archive/2013/05/13/windows-azure-virtual-networks-and-ike-versions.aspx</link><pubDate>Mon, 13 May 2013 15:55:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3572357</guid><dc:creator>Thomas W Shinder - MSFT</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/privatecloud/rsscomments.aspx?WeblogPostID=3572357</wfw:commentRss><comments>http://blogs.technet.com/b/privatecloud/archive/2013/05/13/windows-azure-virtual-networks-and-ike-versions.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/2451.image_5F00_43714980.png"&gt;&lt;img title="Dr. Tom Shinder" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/5584.image_5F00_thumb_5F00_09820694.png" alt="Dr. Tom Shinder" width="100" height="119" align="left" border="0" /&gt;&lt;/a&gt;Have you heard about Windows Azure Infrastructure Services? If not, then you&amp;rsquo;re in for a treat! Windows Azure Infrastructure &lt;a href="http://blogs.technet.com/b/privatecloud/"&gt;&lt;img title="Building Clouds Blog" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/6557.image_5F00_6C91D414.png" alt="Building Clouds Blog" width="85" height="86" align="right" border="0" /&gt;&lt;/a&gt;Services enable you to put your virtual machines in the cloud. There are a lot of reasons why you might want to do this. Maybe your datacenter is at capacity and you need to stand up new service. No problem! Put those virtual machines in the Windows Azure Infrastructure Services cloud. Maybe you host a public facing service and you want to move the public facing components out of the corporate network and into the cloud. Windows Azure Infrastructure Services can help you with that too.&lt;/p&gt;
&lt;p&gt;My team is working on a project called &amp;ldquo;Hybrid IT Infrastructure Solution for Enterprise IT&amp;rdquo; and the focus is on what the IT Pro needs to think about before moving services into a IaaS cloud solution like Windows Azure Infrastructure Services. Issues &lt;a href="http://technet.microsoft.com/en-us/cloud/private-cloud"&gt;&lt;img title="Cloud and Datacenter Solutions Hub" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/5531.image_5F00_6953291E.png" alt="Cloud and Datacenter Solutions Hub" width="240" height="82" align="right" border="0" /&gt;&lt;/a&gt;around authentication, authorization, account management, security, performance, availability and networking will be covered in a collection of documents.&lt;/p&gt;
&lt;p&gt;Of course, in order for us to provide you the information you need, and help you avoid any potential issues, we have to build out a solution using an application that runs on the hybrid IT infrastructure. The document set will include the results of our findings so that you can more efficiently move applications and services into the Azure Infrastructure Services cloud.&lt;/p&gt;
&lt;p&gt;In this article, Yuri Diogenes, who is doing the engineering work on this project, shares with you some findings from when he was trying to connect to an Azure Virtual Network that hosts the virtual machines for the public side of our solution. I think you&amp;rsquo;ll find the discussion interesting and it give you some insight into discovery and troubleshooting for a specific issue in Azure Infrastructure Services. Think of us a &amp;ldquo;customer zero&amp;rdquo; where we find things out and help you avoid potential problems! Enjoy! &amp;ndash;Tom.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/4670.image_5F00_0B40DB74.png"&gt;&lt;img title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/7331.image_5F00_thumb_5F00_4A325C0F.png" alt="image" width="140" height="204" align="right" border="0" /&gt;&lt;/a&gt;Almost a month ago I wrote &lt;a href="http://blogs.technet.com/b/privatecloud/archive/2013/04/10/azure-site-to-site-vpn-fails-to-transmit-data-tales-of-nat-traversal.aspx"&gt;this post&lt;/a&gt; about an attempt I made to establish a site to site VPN connection between a TMG firewall and a Windows Azure Virtual Network and the conclusion was that you need a public IP address on your edge device in order for the connection to be successful.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note: &lt;br /&gt;&lt;/strong&gt;TMG is not supported for the on premises side of the site to site connection to Windows Azure Virtual Networks. Due to some peculiarities of our test environment, we were forced to use TMG for our early testing.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;With that learning in mind, I got a valid public IP address and now I&amp;rsquo;m ready to rock! It should be straightforward now that I have all the steps in mind and know how it works. Using the same lab environment (but now with TMG having a public IP address I faced a different issue. The tunnel between Azure and TMG connected for a couple of seconds (from the Azure Portal perspective) and then it dropped. This was a consistent pattern, so it was not a one-off transient situation.&lt;/p&gt;
&lt;p&gt;Using TMG DataPackager with VPN template I gathered the data that I needed to understand what it was going on. When I started to review the IKE Logging this is what I got:&lt;/p&gt;
&lt;p&gt;[0]00FC.0638::00/00/0000-00:00:00.000 [user] |Azure_IP|IkeVerifyPacketHeader failed with Windows error 13824(ERROR_IPSEC_IKE_INVALID_HEADER) &lt;br /&gt;[0]00FC.0638::00/00/0000-00:00:00.000 [user] |Azure_IP|IkeVerifyPacketHeader failed with HRESULT 0x80073600(ERROR_IPSEC_IKE_INVALID_HEADER) &lt;br /&gt;[0]00FC.0638::00/00/0000-00:00:00.000 [user] |Azure_IP|IkeVerifyPacketHeader failed with Windows error 13824(ERROR_IPSEC_IKE_INVALID_HEADER) &lt;br /&gt;[0]00FC.0638::00/00/0000-00:00:00.000 [user] |Azure_IP|IkeVerifyPacketHeader failed with HRESULT 0x80073600(ERROR_IPSEC_IKE_INVALID_HEADER) &lt;br /&gt;[0]00FC.0638::00/00/0000-00:00:00.000 [user] |Azure_IP|IkeVerifyPacketHeader failed with Windows error 13824(ERROR_IPSEC_IKE_INVALID_HEADER) &lt;br /&gt;[0]00FC.0638::00/00/0000-00:00:00.000 [user] |Azure_IP|IkeVerifyPacketHeader failed with HRESULT 0x80073600(ERROR_IPSEC_IKE_INVALID_HEADER) &lt;br /&gt;[0]00FC.0638::00/00/0000-00:00:00.000 [user] |Azure_IP|IkeVerifyPacketHeader failed with Windows error 13824(ERROR_IPSEC_IKE_INVALID_HEADER) &lt;br /&gt;[0]00FC.0638::00/00/0000-00:00:00.000 [user] |Azure_IP|IkeVerifyPacketHeader failed with HRESULT 0x80073600(ERROR_IPSEC_IKE_INVALID_HEADER) &lt;br /&gt;[0]00FC.0638::00/00/0000-00:00:00.000 [user] |Azure_IP|IkeVerifyPacketHeader failed with Windows error 13824(ERROR_IPSEC_IKE_INVALID_HEADER) &lt;br /&gt;[0]00FC.0638::00/00/0000-00:00:00.000 [user] |Azure_IP|IkeVerifyPacketHeader failed with HRESULT 0x80073600(ERROR_IPSEC_IKE_INVALID_HEADER) &lt;br /&gt;[0]00FC.0638::00/00/0000-00:00:00.000 [user] |Azure_IP|IkeVerifyPacketHeader failed with Windows error 13824(ERROR_IPSEC_IKE_INVALID_HEADER) &lt;br /&gt;[0]00FC.0638::00/00/0000-00:00:00.000 [user] |Azure_IP|IkeVerifyPacketHeader failed with HRESULT 0x80073600(ERROR_IPSEC_IKE_INVALID_HEADER) &lt;br /&gt;[0]00FC.0638::00/00/0000-00:00:00.000 [user] |Azure_IP|IkeVerifyPacketHeader failed with Windows error 13824(ERROR_IPSEC_IKE_INVALID_HEADER) &lt;br /&gt;[0]00FC.0638::00/00/0000-00:00:00.000 [user] |Azure_IP|IkeVerifyPacketHeader failed with HRESULT 0x80073600(ERROR_IPSEC_IKE_INVALID_HEADER) &lt;br /&gt;[0]00FC.0638::00/00/0000-00:00:00.000 [user] |Azure_IP|IkeVerifyPacketHeader failed with Windows error 13824(ERROR_IPSEC_IKE_INVALID_HEADER) &lt;br /&gt;[0]00FC.0638::00/00/0000-00:00:00.000 [user] |Azure_IP|IkeVerifyPacketHeader failed with HRESULT 0x80073600(ERROR_IPSEC_IKE_INVALID_HEADER) &lt;br /&gt;[0]00FC.0638::00/00/0000-00:00:00.000 [user] |Azure_IP|IkeVerifyPacketHeader failed with Windows error 13824(ERROR_IPSEC_IKE_INVALID_HEADER) &lt;br /&gt;[0]00FC.0638::00/00/0000-00:00:00.000 [user] |Azure_IP|IkeVerifyPacketHeader failed with HRESULT 0x80073600(ERROR_IPSEC_IKE_INVALID_HEADER) &lt;br /&gt;[0]00FC.0480::00/00/0000-00:00:00.000 [ikeext]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0|NULL|IkeRegConfigChangeNotifyCallback invoked &lt;br /&gt;[0]00FC.0480::00/00/0000-00:00:00.000 [ikeext]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0|NULL|Stopping IKE tracing&lt;/p&gt;
&lt;p&gt;The &amp;ldquo;Invalid header&amp;rdquo; could be something related with the IKE itself, unfortunately researching for this error didn&amp;rsquo;t help me too much:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-62-77-metablogapi/5875.image_5F00_2.png"&gt;&lt;img title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-62-77-metablogapi/1780.image_5F00_thumb.png" alt="image" width="493" height="67" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Next step: I need to figure out what&amp;rsquo;s happening on the wire! To do that, I&amp;rsquo;ll reviewing a network monitor trace for this traffic and found:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-62-77-metablogapi/6320.image_5F00_4.png"&gt;&lt;img title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-62-77-metablogapi/1541.image_5F00_thumb_5F00_1.png" alt="image" width="802" height="476" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A ha! That explains everything. &lt;a href="http://www.isaserver.org/tutorials/Selecting-best-TMG-Firewall-Remote-Access-VPN-Protocol-network.html"&gt;TMG doesn&amp;rsquo;t work with IKEV2&lt;/a&gt;, hence it fails to negotiate the IKEv2 connection with the gateway on the Azure Virtual Network.&lt;/p&gt;
&lt;p&gt;But wait a minute, this used to work. What happened? Prior to GA, Windows Azure was using IKEv1. When you are using Windows Azure Gateway you can configure it to use Static Routing or Dynamic Routing (see more info about these definitions &lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/jj156075.aspx"&gt;here&lt;/a&gt;), if you use Dynamic Routing then Azure Gateway for Site to Site will use IKEv2. This document is getting updated to reflect this change that was introduced in GA.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;And please remember&lt;/strong&gt;: &lt;em&gt;TMG is not supported for site to site connectivity on Azure and now that Dynamic Routing require IKEV2, TMG is not an option even for testing purpose.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yuri Diogenes &lt;br /&gt;Senior Technical Writer &lt;br /&gt;Server and Cloud Division Solutions Team&lt;/strong&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;There you go! That&amp;rsquo;s the great thing about working on these kind of projects. As customer &amp;ldquo;zero&amp;rdquo; we take the role of the person who wants to use these services and try to get them working. As we discover how the service works, we also discover things that you&amp;rsquo;ll want to know so that you&amp;rsquo;ll be able to plan, design, implement and operate a hybrid cloud in the best and easiest way possible. Stay tuned for more learnings.&lt;/p&gt;
&lt;p&gt;HTH,&lt;/p&gt;
&lt;p&gt;Tom&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tom Shinder &lt;br /&gt;&lt;/strong&gt;&lt;a href="mailto:tomsh@microsoft.com"&gt;&lt;strong&gt;tomsh@microsoft.com&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt; &lt;br /&gt;Knowledge Engineer, SCD iX Solutions Group &lt;br /&gt;&lt;/strong&gt;&lt;strong&gt;Follow me on Twitter: &lt;/strong&gt;&lt;a href="http://twitter.com/tshinder"&gt;&lt;strong&gt;http://twitter.com/tshinder&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt; &lt;br /&gt;Facebook: &lt;/strong&gt;&lt;a href="http://www.facebook.com/tshinder"&gt;&lt;strong&gt;http://www.facebook.com/tshinder&lt;/strong&gt;&lt;/a&gt; &lt;br /&gt;&lt;a href="http://www.technet.com/cloud/private-cloud"&gt;&lt;img title="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/8640.image_5F00_0FDB3BAD.png" alt="image" width="240" height="20" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;table style="width: 560px;" border="0" cellspacing="0" cellpadding="2"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="560"&gt;
&lt;p align="center"&gt;&lt;strong&gt;&lt;span style="font-size: medium;"&gt;Go Social with Building Clouds!&lt;/span&gt;&lt;/strong&gt; &lt;br /&gt;&lt;a href="http://blogs.technet.com/b/privatecloud/"&gt;&lt;strong&gt;Building Clouds blog&lt;/strong&gt;&lt;/a&gt; &lt;br /&gt;&lt;a href="http://www.facebook.com/privatecloudarch"&gt;&lt;strong&gt;Private Cloud Architecture Facebook page&lt;/strong&gt;&lt;/a&gt; &lt;br /&gt;&lt;a href="http://twitter.com/PrivateCloudMS"&gt;&lt;strong&gt;Private Cloud Architecture Twitter account&lt;/strong&gt;&lt;/a&gt; &lt;br /&gt;&lt;a href="https://twitter.com/Building_Clouds"&gt;&lt;strong&gt;Building Clouds Twitter account&lt;/strong&gt;&lt;/a&gt; &lt;br /&gt;&lt;a href="http://www.linkedin.com/groups/microsoft-private-cloud-3948950"&gt;&lt;strong&gt;Private Cloud Architecture LinkedIn Group&lt;/strong&gt;&lt;/a&gt; &lt;br /&gt;&lt;a href="http://social.technet.microsoft.com/Forums/en-US/category/cloudcomputing"&gt;&lt;strong&gt;Cloud TechNet forums&lt;/strong&gt;&lt;/a&gt; &lt;br /&gt;&lt;a href="http://www.technet.com/cloud/private-cloud"&gt;&lt;strong&gt;TechNet Cloud and Datacenter Solutions Site&lt;/strong&gt;&lt;/a&gt; &lt;br /&gt;&lt;a href="http://social.technet.microsoft.com/wiki/search/searchresults.aspx?q=private+cloud"&gt;&lt;strong&gt;Cloud and Datacenter Solutions on the TechNet Wiki&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3572357" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/Fabric/">Fabric</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/Tom+Shinder/">Tom Shinder</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/Yuri+Diogenes/">Yuri Diogenes</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/hybrid+cloud/">hybrid cloud</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/hybrid+IT/">hybrid IT</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/Azure+Virtual+Networks/">Azure Virtual Networks</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/Site+to+site+VPN/">Site to site VPN</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/Hybrid+IT+Infrastructure+Solution+for+Enterprise+IT/">Hybrid IT Infrastructure Solution for Enterprise IT</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/IKEv1/">IKEv1</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/TMG/">TMG</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/IKE/">IKE</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/IKEv2/">IKEv2</category></item><item><title>Deployment-Installing scale out roles with PDT</title><link>http://blogs.technet.com/b/privatecloud/archive/2013/05/13/deployment-installing-scale-out-roles-with-pdt.aspx</link><pubDate>Mon, 13 May 2013 15:52:45 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3572356</guid><dc:creator>Rob Willis (MSFT)</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/privatecloud/rsscomments.aspx?WeblogPostID=3572356</wfw:commentRss><comments>http://blogs.technet.com/b/privatecloud/archive/2013/05/13/deployment-installing-scale-out-roles-with-pdt.aspx#comments</comments><description>&lt;p&gt;This is the last of three posts that explain how PDT can be configured to deploy a highly available configuration.&amp;#160; The &lt;a href="http://blogs.technet.com/b/privatecloud/archive/2013/03/26/deployment-installing-sql-clusters-with-pdt.aspx" target="_blank"&gt;first post&lt;/a&gt; covered SQL clusters, the &lt;a href="http://blogs.technet.com/b/privatecloud/archive/2013/04/01/deployment-installing-vmm-clusters-with-pdt.aspx" target="_blank"&gt;second post&lt;/a&gt; covered Virtual Machine Manager (VMM) clusters, and this post will cover scale out &lt;a href="http://blogs.technet.com/b/privatecloud/"&gt;&lt;img title="Building Clouds Blog" border="0" alt="Building Clouds Blog" align="right" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/6557.image_5F00_6C91D414.png" width="85" height="86" /&gt;&lt;/a&gt;roles.&lt;/p&gt;  &lt;p&gt;Several System Center components offer high availability by having multiple instances of a role, and other components allow scale the same way.&amp;#160; During deployment, there are three different methods for installation of multiple instances of a role:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Concurrent – all instances of a role can be installed at the same time.&amp;#160; The Orchestrator Runbook Server role is an &lt;a href="http://technet.microsoft.com/en-us/cloud/private-cloud"&gt;&lt;img title="Cloud and Datacenter Solutions Hub" border="0" alt="Cloud and Datacenter Solutions Hub" align="right" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-85-24-metablogapi/5531.image_5F00_6953291E.png" width="240" height="82" /&gt;&lt;/a&gt;example of this type of role, although PDT actually treats it as first then additional so that a primary runbook server can be designated.&lt;/li&gt;    &lt;li&gt;First then additional – an instance of a role must be installed first, then all additional instances of that role can be installed concurrently.&amp;#160; This is typically the case when the first instance of a role creates a database.&amp;#160; The Operations Manager Management Server role is an example of this type of role.&lt;/li&gt;    &lt;li&gt;Sequential – all instances of a role must be installed sequentially.&amp;#160; This is typically because each installation of the role restarts the SQL instance that it is using.&amp;#160; The Data Protection Manager Server role is an example of this type of role.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;PDT has the ability to install scale out roles for all components – you simply need to list the instances of those roles in the &amp;lt;Roles&amp;gt; section of Variable.xml, using the correct role name.&amp;#160; Role names are as follows:&lt;/p&gt;  &lt;p&gt;Orchestrator (first then additional):&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;First role – System Center 2012 SP1 Orchestrator Primary Runbook Server&lt;/li&gt;    &lt;li&gt;Additional roles - System Center 2012 SP1 Orchestrator Standby Runbook Server&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Service Provider Foundation (first then additional):&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;First role – System Center 2012 SP1 Service Provider Foundation Server&lt;/li&gt;    &lt;li&gt;Additional roles - System Center 2012 SP1 Service Provider Foundation Additional Server&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;App Controller (first then additional):&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;First role – System Center 2012 SP1 App Controller Server&lt;/li&gt;    &lt;li&gt;Additional roles - System Center 2012 SP1 App Controller Additional Server&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Operations Manager (first then additional):&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;First role – System Center 2012 SP1 Operations Manager Management Server&lt;/li&gt;    &lt;li&gt;Additional roles - System Center 2012 SP1 Operations Manager Additional Management Server&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Service Manager (first then additional):&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;First role – System Center 2012 SP1 Service Manager Management Server&lt;/li&gt;    &lt;li&gt;Additional roles - System Center 2012 SP1 Service Manager Additional Management Server&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Data Protection Manager (sequential):&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;All roles – System Center 2012 SP1 Data Protection Manager Server&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;PDT pre-deployment validation will validate that all roles have dependent roles in the deployment – for example, if you are installed an Operations Manager Additional Management Server you will also need an Operations Manager Management Server.&amp;#160; Pre-deployment validation will also validate that there are an appropriate number of instances of roles – for example, all “first role” roles above can only have a single instance, where all other roles above can have multiple instances.&lt;/p&gt;  &lt;p&gt;Note that high availability of Service Provider Foundation and App Controller roles also requires a load balancer – PDT does not install or configure load balancing, that is required as a manual post-deployment step.&lt;/p&gt;  &lt;hr /&gt;  &lt;table cellspacing="0" cellpadding="2" width="560" border="0"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="560"&gt;         &lt;p align="center"&gt;&lt;strong&gt;&lt;font size="4"&gt;Go Social with Building Clouds!&lt;/font&gt;&lt;/strong&gt;            &lt;br /&gt;&lt;a href="http://blogs.technet.com/b/privatecloud/"&gt;&lt;strong&gt;Building Clouds blog&lt;/strong&gt;&lt;/a&gt;            &lt;br /&gt;&lt;a href="http://www.facebook.com/privatecloudarch"&gt;&lt;strong&gt;Private Cloud Architecture Facebook page&lt;/strong&gt;&lt;/a&gt;            &lt;br /&gt;&lt;a href="http://twitter.com/PrivateCloudMS"&gt;&lt;strong&gt;Private Cloud Architecture Twitter account&lt;/strong&gt;&lt;/a&gt;            &lt;br /&gt;&lt;a href="https://twitter.com/Building_Clouds"&gt;&lt;strong&gt;Building Clouds Twitter account&lt;/strong&gt;&lt;/a&gt;            &lt;br /&gt;&lt;a href="http://www.linkedin.com/groups/microsoft-private-cloud-3948950"&gt;&lt;strong&gt;Private Cloud Architecture LinkedIn Group&lt;/strong&gt;&lt;/a&gt;            &lt;br /&gt;&lt;a href="http://social.technet.microsoft.com/Forums/en-US/category/cloudcomputing"&gt;&lt;strong&gt;Cloud TechNet forums&lt;/strong&gt;&lt;/a&gt;            &lt;br /&gt;&lt;a href="http://www.technet.com/cloud/private-cloud"&gt;&lt;strong&gt;TechNet Cloud and Datacenter Solutions Site&lt;/strong&gt;&lt;/a&gt;            &lt;br /&gt;&lt;a href="http://social.technet.microsoft.com/wiki/search/searchresults.aspx?q=private+cloud"&gt;&lt;strong&gt;Cloud and Datacenter Solutions on the TechNet Wiki&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3572356" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/System+Center/">System Center</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/Deployment/">Deployment</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/System+Center+2012+SP1/">System Center 2012 SP1</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/Building+Clouds/">Building Clouds</category><category domain="http://blogs.technet.com/b/privatecloud/archive/tags/Deployment+Track/">Deployment Track</category></item></channel></rss>