12 Apr 2013

Windows Server 2012 features

Server 2008 R2 is a great operating system, while Server 2012 bears the stigma of Metro and the Windows 8 controversy. But the answer to "why care" is simple: Server 2012 is as big a leap over 2008 R2 as 2008 R2 was over 2003.

Server 2012 comes with some great new features. It also refines previous versions of Server to bring it past the "never use version 1.0" stage and up to parity, in features and stability, with competing offerings.

In short Windows Server 2012 kicks ass. Here are the top 10 reasons why.

1. IIS 8

IIS 8 brings Internet Information Services up to feature parity with the rest of the world, and surpasses it in places. More than a decade's worth of "you use Windows as your web server" jokes officially end here.

IIS 8 sports script precompilation, granular process throttling, SNI support and centralised certificate management. Add in a FTP server that finally, mercifully, doesn't suck (it even has functional login restrictions) and IIS 8 becomes worth the cost of the operating system on its own.

2. PowerShell

PowerShell 3.0 is an evolution rather than a revolution. Having more PowerShell scriptlets is not normally something I would care about. That said, the 2012 line of products marks a revolution in Microsoft's approach to server management.

Every element of the operating system and virtually every other companion server, such as SQL, Exchange or Lync, are completely manageable through PowerShell. This is so ingrained that the GUIs are just buttons that call PowerShell scripts underneath.

PowerShell should be tops on this list but to make proper use of it, your Google-fu has to be strong. The official documentation is incomplete, Bing is still worthless for searching Microsoft's web estate and the golden examples for making use of PowerShell lie in the blogs maintained by Microsoft's staff.

Once you have assembled the list of scriptlets you need – printed, laminated and guarded by a fire elemental as in days of old – you can make the 2012 stack of Microsoft software sing. Thanks to PowerShell, Microsoft is ready to take on all comers at any scale.

3. DirectAccess

DirectAccess was a neat idea but it was poorly implemented in previous versions of Windows. Server 2012 makes it easier to use, with SSL as the default configuration and IPSec as an option. The rigid dependence on IPv6 has also been removed.

DirectAccess has evolved into a reasonable, reliable and easy-to-use replacement for virtual private networks.

4. Cluster Shared Volumes


With Server 2012 Cluster Shared Volumes are officially supported for use beyond hosting virtual hard disks for Hyper-V. You may now roll your own highly available multi-node replicated storage cluster and do so with a proper fistful of best-practice documentation.

5. Deduplication

For years now, storage demand has been growing faster than hard drive density. Meeting our voracious appetite for data storage has meant more and more spindles, and more controllers, chassis, power supplies, electricity and cooling to keep those spindles spinning.

Deduplication has moved from nice to have to absolute must in recent years and Microsoft has taken notice. Server 2012 supports deduplication on NTFS volumes – though tragically it does not work with CSV – and deeply integrates it with BranchCache to save on WAN bandwidth.

6. Hyper-V 3.0

Server 2012 sees Hyper-V catch up with VMware's mainstream. While objectively I would have to say that VMware retains the feature lead at the top end, when combined with System Center 2012, Hyper-V 3.0 will cheerfully handle two-sigma worth of use cases.

Microsoft is no longer an also-ran in the virtualisation space; it is a capable and voracious predator stalking the wilds of the data centre for new prey.

Microsoft's Hyper-V Server – a free Windows Core version of Hyper-V – is feature complete. If you have a yen to dive into PowerShell then you can run a complete 64-node, 8,000 virtual machine Hyper-V cluster without paying Microsoft a dime.

It takes a very special kind of masochist to do so – Microsoft is betting you will spend the money on System Center 2012 and it is probably right. System Center 2012 is amazing, even more so with the newly launched Service Pack 1.

Microsoft's focus on PowerShell and its decision to put price pressure on VMware with Hyper-V server has opened up a market for third-party management tools such as 5Nine. These are not nearly as capable as System Center, but offer a great mid-point between free and impossible to manage and awesome but too expensive. This emerging ecosystem should see Hyper-V's market share explode.

7. Hyper-V Replica

Hyper-V Replica is a storage technology designed to continuously replicate your virtual machines across to a backup cluster. It ensures that snapshots no more than 15 minutes old of your critical virtual machines are available over any network link, including the internet.

It replicates the initial snapshot in full – after that it sends only change blocks – and it fully supports versioning of your virtual machines.

8. iSCSI

With Windows Storage Server 2008, Microsoft first made an iSCSI target available. It eventually became an optional download from Microsoft's website for Server 2008 R2 and is now finally integrated into Server 2012 as a core component.

9. NFS 4.1

Microsoft's NFS 4.1 server is good code. Designed from the ground up it is is fast, stable and reliable. It makes a great storage system for heterogenous environments and a wonderful network storage point for VMware servers.

10. SMB 3.0

SMB 3.0 is the crown jewel of Server 2012. It is far removed from its laughingstock predecessor CIFS. It supports multiple simultaneous network interfaces – including the ability to hot-plug new interfaces on the fly to increase bandwidth for large or complex transfers – and supports MPIO, thin provisioning of volumes and deduplication (assuming the underlying storage is NTFS).

SMB 3.0 also supports SMB Direct and remote direct memory access, the ability for appropriately kitted systems to move SMB data directly from one system's memory to the other, bypassing the SMB stack. This has enabled Microsoft to hit 16GBps transfer rates for SMB 3.0, a weighty gauntlet for any potential challenger to raise.

I have found Server 2012 to be worth the cost of the upgrade, even where I have the excellent Server 2008 R2 deployed. Given that I work with very limited IT budgets, that is a strong endorsement.

If you have also taken the plunge, please share your take in the comments below.

10 Apr 2013

Understanding Active Directory Containers

Containers of various types are the building block of an Active Directory infrastructure. Some are built-in, while others are fully customized. It is important to know about all the different active directory containers when planning any network infrastructure.

Overview
Active Directory is a directory service that is used to store information about various network resources and nodes throughout a domain. It aids in administration by providing centralized management of the network. Directory services like Active Directory essentially catalogue information about objects on the network. For example, if you wanted to know what group Jane was a part of, and what access that group has to the Accounting department files, all of that information can be obtained and used in Active Directory.

Active Directory treats all parts of the network as objects. Objects come in three distinct flavors: Resources (printers, network storage, etc), Users (individual user accounts and user groups), and Services (email, etc.). Objects can also contain other objects - in fact this is the main infrastructure of Active Directory. It is heirarchical. Objects that contain other objects are called Containers, and objects that can contain no other objects (such as an individual user) are called leaf objects or leaves.

Containers are an integral part of the Active Directory system. Some container objects are created by default when you promote the first Domain controller (see, promoting a domain controller). Others are created by the administrator for logical grouping, setting permissions, and other reasons. Let's take a look at the different kinds of container objects.

Default Container Objects
There are several container objects that are installed by default when you promote the first domain controller on your network. When you promote the DC, Active Directory installs for the first time, and these containers are created. They differ from manually created containers because their object attribute type is literally named a container. They don't have the same properties as other generic Active Directory containers (such as sites, domains, and OUs). You cannot delete them nor can you create new objects of that container object type. You can also not associate Group Policy Objects with these. These containers are:

Computers - All member servers in the domain are placed, by default, in the Computers container. Additionally, all workstations joined to the domain also appear in this container.

Users - Much like how Computers and Servers joined to the domain are auto-dumped into the Computers container, Users of all levels are automatically placed inside the Users container.

Builtin - Builtin does much what its name implies. It is the container that stores default groups, such as Backup Operators, Server Operators, and Group Policy Creator Owners. These groups are preconfigured with permissions to perform specific tasks that administrators will often make use of.

ForeignSecurityPrincipals - Controls and displays "trust" relationships with other domains.

Generic and Created Container Objects
In addition to the aforementioned default and special containers, there are three major types of containers that are configured manually and are considered "generic". In contrast to the above containers, these are most often used to link group policy objects. When you link a group policy to a container it enforces that policy on all the objects (be it users, computers, nested groups, etc.) inside. Let's look at these types of containers:

Site - A site is actually a physical grouping of objects based upon IP Addresses. A site cannot span multiple physical locations, but rather emcompasses network objects and devices in one area. For example, the Thneed company has offices in Seattle, Los Angeles, and Miami. Each office is a physical location, and therefore is considered a "site". The site container is a logical representation of what is physically true.

Domain - The domain container holds all of the other objects that are a part of that domain. You can link a GPO to a domain object if you want to enforce a specific rule upon the domain as a whole. This makes centralized management a true reality.

Organizational Unit - Organizational Units are nothing fancy. They are simple a container that the administrator creates that he can use for any purpose. Most administrators will create logical organizational units and place users and/or groups inside them in order to setup specific permissions or policy. For example, he may create an organizational unit called "Accounting" and place the executives and the accounting department into it in so that they can have access to specific resources that are not available to the rest of the network.

7 Apr 2013

Creating and Managing Virtual Servers with Windows 2008 Server & Hyper-V

Open Server Manager and then navigate through the console tree to Roles -> Hyper-V ->Microsoft Hyper-V Server. If this is the first time that you have used Hyper-V, then you will be prompted to accept Hyper-V License Agreement.  Once you accept the license agreement, the various Hyper-V options will be made available to you.

The first thing that you must do is to click on the Connect to Server link, located in the Actions pane. When you do, you will be prompted to select the computer that you want to connect to. Choose the Local Computer option, and click OK. You will now see the screen shown in Figure A.

Figure A

This is the main screen that you will use for managing virtual machines.

Creating a New Virtual Server

To create a new virtual server, click the New -> Virtual Machine options found in the Actionspane. When you do, Windows will launch the New Virtual Machine Wizard. The wizard's initial screen explains that you can click Next to begin customizing a virtual machine, but that you also have the option of clicking Finish right now to create a virtual machine that uses the default values. For the purposes of this article, I will create a custom virtual machine so that you can see the options that are available to you.

With that said, click Next and you will be prompted to enter a name and a location for the virtual machine that you are creating. I recommend using a descriptive name. The location is up to you, but if your server contains a striped RAID array, then that is a good location to choose for performance reasons.

Click Next and you will be prompted to enter the amount of memory that is to be assigned to the new virtual machine. By default, new virtual machines are assigned 512 MB of RAM, but that isn't really enough if you plan on running Windows Vista or Windows Server 2008. I would recommend 1 GB for Vista and 2 GB for Windows Server 2008 installations.

Click Next, and the wizard will prompt you to choose which network adapter you want to use for the machine's virtual network connection. As you may recall, when you installed Hyper-V, you were given the opportunity to select one or more network adapters to be used by virtual machines. This option allows you to pick from the network adapters that you previously selected. The idea is that you can use a different network adapter on each virtual machine if you want, so that no single network adapter becomes over burdened.

When you have made your selection, click Next, and you will be prompted to choose the virtual hard drive that you want the machine to use, as shown in Figure B. As you can see in the figure, you can either create a new virtual hard drive, or you can use an existing one. Since there aren't any existing virtual hard drives right now, we will have to create a new one. Windows defaults to creating a virtual hard drive that's 127 MB in size, but you can create a drive of up to 2 TB if you want.

Figure B

You must specify the size of your new virtual hard drive.

Click next, and you will be prompted to install an operating system on the new virtual machine. You have the option of installing an operating system later on, but you can also choose to install from a CD (or an .ISO file), a boot floppy, or from an installation server, as shown in Figure C.

Figure C

You can choose to install an operating system now.

When you've made your choice, click Next. You will now see a summary of the options that you have created. If you have chosen to go ahead and install an operating system, then insert the operating system media, select the option to start the virtual machine, and clickFinish. Windows will now launch the virtual machine and begin installing the operating system, as shown in Figure D.

Figure D

Windows will launch the new virtual machine and begin installing the guest operating system. And with that, we are done!

Windows 8 Client Hyper-V : Configuring a Virtual Switch

How to install and configure the client Hyper-V feature in Windows 8. In this article, part two, our next step is to take the plunge and finish configure a virtual switch.

But first things first: We need to configure networking. In the Hyper-V Manager, click Virtual Switch Manager link in the Actions pane. You should see something like Figure 1.

Hyper-V Virtual Switch Manager

You can create any number of switches from a variety of types, but because this is on a client operating system you may not need more than one or two. The type of switch to define depends on how you expect to use your virtual machines. If you are creating a VM that needs access to the physical network and resources then you'll need an external switch. If you only need to communicate between the client and the VM then you can use an internal switch. The virtual machine won't be accessible from nor can it reach the physical network. Another option is to use a private switch that is only accessible by your virtual machines. If your virtual machines will have multiple network interfaces you use these switches in any combination that you require.

In my situation, I want my virtual machines to access the network, so I'm going to create an external switch. I highlight "External" and click Create Virtual Switch. The result is Figure 2.

Hyper-V Create External Switch

Test drive Mailscape: Exchange tool named "Best Messaging Product of the Year"

I'll go ahead and give my switch a name. You can see a drop-down list under Connection Type. This is for the different physical network adapters in my computer. Virtual network traffic will be bound to this adapter. The rest of the defaults are fine for me.

When you go to apply the settings you might get a warning, as seen below in Figure 3.

Hyper-V Apply Networking Changes warning

Basically there's a chance your computer will drop off the network momentarily don't be doing anything important while configuring virtual networking! My new switch can be seen in Figure 4.

Hyper-V New Switch

Click the little + sign next to the switch name to expand the switch, and then select Extensions. You should get Figure 5.

Hyper-V Extensions

These extensions are used by vendors, as well as Microsoft, to offer ways to hook into network traffic. For example, I might want to be able to capture packets, so I'm going to enable the Microsoft NDIS Capture extension. Again, you might get a warning about potential network interruptions.

Because I'm thinking I might test some services that require a private network for things like heartbeat, I'm going to go ahead and also set up a private switch. My final results are in Figure 6.

Hyper-V private Switch

If at some point in the future you need to delete a switch, simply select it and you should see a Remove button. For those of you who would like to dig into the technical details of these virtual switches take a look at Microsoft's Hyper-V virtual switch overview.

That just about wraps up configuration. There is an option to configure a virtual fibre channel connection to a SAN, but this is of no use to me since I have no physical fibre channel connections. In the next installment of this series, we'll get some virtual machines going.

Windows 8 Client Hyper-V : Installation and Configuration

I'll create a new virtual machine from an existing VHD that had a previously installed operating system.

First, your computer must be able to run Hyper-V. This means you need a 64bit system that has the necessary hardware and BIOS bits to run virtualization. You'll also need at least 4GB of RAM -- the more the merrier, assuming you want to run multiple virtual machines simultaneously. Fortunately, if you need to run a server operating system, say, for testing purposes, running a Server Core edition can save a lot on memory. Windows Server 2012 will be a big help here because you will be able to install and configure it with a GUI and then take the GUI away, leaving a Server Core system.

Next, you need to configure Windows 8 to enable Hyper-V. It is not installed by default, so don't bother looking for it if you have a new Windows 8 install. Instead you'll need to enable a Windows feature. First, open Control Panel (I find it easiest to press Windows+R and type in Control). Then click Programs. Finally, select "Turn Windows features on or off." This will require elevated privileges.

After a moment you should get a dialog box with available Windows features. Scroll down to Hyper-V and check the items you want to install. You can see my result below in Figure 1.

Fig1 Win8 Hyper-V dialog box

Go ahead and check (or uncheck) other features as needed. As long as you are here, click OK. The Hyper-V feature will require a reboot. You should get some new tiles like in Figure 2.

Fig2 Win8 Hyper-V new module

If you installed the PowerShell support, you should see a new module.

PS C:\> get-module hyper-v -ListAvailable    Directory: C:\Windows\system32\WindowsPowerShell\v1.0\Modules    ModuleType Name             ExportedCommands    ---------- ----             --------------    Binary     Hyper-V          {Add-VMDvdDrive, Add-VMNetworkAdapter, Add-VMF...

We'll definitely be looking at this later. In the mean time, let's open the Hyper-V Manager.

Fig3 Win8 Hyper-V manager

As you can see above in Figure 3, I could connect to another Hyper-V server in my environment. However, I'm only concerned about using Hyper-V on the client, which is the computer called SERENITY.

Fig4 Win8 Hyper-V client

As you can see above in Figure 4, nothing has been created or configured. Click Hyper-V Settings to check out the default configuration as seen below in Figure 5.

Fig5 Win8 Hyper-V default configuration

The primary settings you might want to change are the default locations for your VHDs and Virtual Machines. You can create disks and machines in multiple places. These are simply the defaults. One thing you might want to consider in selecting a path is if it will get backed up. I'm going to leave them be for now and make sure my backup processes include these paths. If you make any changes, click Apply or OK.

Windows 8 Client Hyper-V : Importing Virtual Machines

If you have previously saved virtual machines from another Hyper-V environment, it is pretty simple to import them. For my test lab, I downloaded an Ubuntu virtual machine appliance, a preconfigured virtual machine that should be ready to go. Sometimes you can also find preconfigured virtual machines from Microsoft that you can use for testing and evaluation purposes. The import process should be the same regardless.

First, in the Hyper-V manager, click the Import Virtual Machine action, as seen below in Figure 1.

Hyper-V Import Virtual Machine

It's your choice whether you want to see this page every time you run an import. I'll go ahead and click Next. This is where I'll specify the path to the virtual machine. All I had to do is browse to the top-level folder that had the config.xml file. Figure 2 shows my path.

Hyper-V virtual machine folder

The wizard found one virtual machine for me to import, as seen below in figure 3.

Hyper-V select virtual machine

Next, I need to decide how to register the virtual machine with this Hyper-V "server." Figure 4 shows my options.

Hyper-V register virtual machine

The choice might depend on what your plans are for the virtual machine. Since I'll likely only ever use this VM for this tutorial, I'm going to use the default Register option. If I was importing a previously created VM, say from a backup of this computer, then I would most likely use the Restore option. The ID is critical, especially if you are using any third-party Hyper-V management tools, since in a restore process you would want to retain the original ID. Of course, if you want to get a new and unique ID, then select the Copy option.

After clicking Next, the import wizard offers you a summary of what it is about to do.

Hyper-V virtual machine summary

So far so good, so I'll finish the wizard. After the import, the new virtual machine is displayed in the Hyper-V manager as seen below in figure 6.

Hyper-V virtual machine in manager

Now, before I get ahead of myself and fire up the VM, I'm going to check the settings. I can either right-click the virtual machine and select Settings from the context menu or click it in the Actions pane. Figure 7 shows the current settings.

Hyper-V virtual machine settings

From here I could modify settings if necessary. Perhaps I don't want to allocate 2GB of memory. Or, in the case of this particular virtual machine, I'll need to manually add a network adapter. As you can see below in Figure 8, I can add the new adapter to my previously defined virtual switches.

Hyper-V add network adapter

I want this VM to be on the network, so I'm going to choose the Work network. I'll accept all the other network adapter defaults for now.

At this point I'm ready to fire up the virtual machine. But because I imported this from a previously created machine, I know that Hyper-V will make some changes the first time I start it on this computer. This is especially true of virtual machines running Windows operating systems. So before I fire it up, I'm going to take snapshot either from the right-click context menu or the Actions pane. This allows me to start over without having to reimport the machine and reconfigure.

Now I'm finally ready to start it again, either from the context or actions menu. Figure 9 shows my new virtual machine in action.

hyper-v virtual machine

To use the virtual machine interactively all I need to do is connect to it. I can click the Connectlink in the Actions menu or double-click the virtual machine name. Hyper-V will then create a session to the virtual machine console as you can see in Figure 10.

Hyper-V connect to virtual machine

I can log on, and just like that I am running Ubuntu! Now, the goal of this article wasn't necessarily to run Ubuntu in Windows 8. I wanted to demonstrate how to import a virtual machine. I could have just as easily imported a previously created virtual machine that ran a Windows operating system. The process is still the same as I demonstrated here.

If you recall from part one of this series, in which I installed and configured Hyper-V, my original intent in using Hyper-V on Windows 8 was to move from Oracle's VirtualBox. Next time we'll look at taking an existing VHD file and building a new virtual machine from it.

Windows 8 Client Hyper-V : Managing Client Hyper-V with PowerShell

I've been exploring Windows 8 Client Hyper-V. I demonstrated how to populate Hyper-V with virtual machines. Part four saw us creating a new virtual machine from an existing VHDthat had a previously installed operating system. I have a collection of VHD files that have been converted from my previously installed VirtualBox setup which I ran previously under Windows 7. I wanted to understand the process so I can re-build my test network under Hyper-V.

Now, if I wanted I could create a totally new virtual machine, and when wizard asks about the disk, I can create a new one as I show below in Figure 1.

Windows 8 Hyper-V Connect virtual hard disk

I've set the size to 20GB and am using the default location. Hyper-V will also help me get an operating system installed on the new disk.

Windows 8 Hyper-V installation options

 I can install an OS from the CD/DVD drive in the host machine or even from an ISO. If I choose to install an OS later, it is up to me to make the necessary virtual machine configurations to mount the installation media. But since I don't have existing test machine for Windows 8, I'll go ahead mount the ISO, as I show below in Figure 3.

Windows 8 Hyper-V installation mount ISO

After I finish the wizard, then I can fire up the virtual machine and it should go through the install process. But I already have a folder of VHD files I want to use. I'm going to create a new virtual machine using the wizard for one of the VHDs. Figure 4 depicts the end result.

Windows 8 Hyper-V new virtual machine

My virtual machine is running Windows Server 2008 R2 Core with a static IP on a single adapter. I boot up the machine, make sure everything works including integration services and am ready to go! As much as I liked VirtualBox, having everything in Hyper-V makes my life easier and opens up new management opportunities (some of which I'll cover in future articles).

However, I don't want to manually click through the wizard to create a dozen or so virtual machines from my saved VHD files. So I'll turn to PowerShell, which is one of the reasons I'm excited about moving to Hyper-V on Windows 8. When I enabled the Hyper-V feature in Part 1, I also made sure to include the PowerShell module. This module has all the tools I need to manage Hyper-V from PowerShell, including creating new virtual machines.

PS C:\> get-command -module Hyper-v

You can see the results in Figure 5.

Windows 8 Hyper-V Powershell

The cmdlet I'm going to use is New-VM. Cmdlet help is shown below in Figure 6, but you will want to look at full help on your computer.

Windows 8 Hyper-V Powershell cmdlet

Thus to create a new virtual machine from the PowerShell prompt I can use a command like this:

PS C:\> New-VM -Name "XP Lab" -VHDPath D:\VHD\XPLab.vhd -MemoryStartupBytes 512MB -BootDevice IDE -SwitchName "Work Network" -whatif    What if: New-VM will create a new virtual machine "XP Lab". 

I love the –WhatIf parameter so I can verify I haven't made an error. The memory parameter defaults to 512MB, but I wanted you to see how to set that. The VHDPath parameter is the path to my existing VHD file. The virtual machine itself will be created in the default location. Or I could have used –Path to specify a different location. I'll rerun the previous command without –Whatif and I have success.

Windows 8 Hyper-V Powershell path

The virtual machine has many properties that I can manage from PowerShell. But for now all I want to do is to take a quick baseline snapshot. I can do this with the Checkpoint-VM cmdlet.

PS C:\> Checkpoint-VM -Name "XP Lab" -SnapshotName "Baseline" -Passthru    VMName Name     SnapshotType CreationTime         ParentSnapshotName    ------ ----     ------------ ------------         ------------------    XP Lab Baseline Standard     8/20/2012 6:00:13 PM

At this point I'm ready to fire up the new VM for the first time.

Now that I know how to do this, I can do it for many. I created a simple CSV file for the virtual machines I want to recreate.

  Name,VHD,Memory  "CHI-DC02",D:\VHD\CHI-DC02.vhd,1073741824  "CHI-FP01",D:\VHD\Globomantics-01.vhd,1073741824  "CHI-DC01",D:\VHD\Globomantics-DC.vhd,1073741824  "CHI-Client01",D:\VHD\Win7-2.vhd,2147483648  "CHI-Client02",D:\VHD\Win7_C.vhd,2147483648

I can then import the CSV file in PowerShell and pipe the results to ForEach-Object. In the loop I'll create a new virtual machine based on the imported data. Because the New-VM writes a virtual machine object to the pipeline, I can go ahead and pipe directly to Checkpoint-VM to create my baseline snapshots. Here's the code I'll run:

import-csv D:\importvm.csv | foreach {    Write-Host "Creating $($_.Name) from $($_.VHD)" -ForegroundColor Green    New-VM -Name $_.Name -VHDPath $_.VHD -MemoryStartupBytes $_.Memory -BootDevice IDE -SwitchName "Work Network" | Checkpoint-VM -SnapshotName Baseline    }

You can see the results below in Figure 8.

Windows 8 Hyper-V Powershell Checkpoint-VM

Hyper-V Manager also shows my "new" virtual machines. Now I can fire them up, do a little cleaning up, and I'm ready to go.

Mind you, I had nothing against VirtualBox -- it was free and fit my needs. But now with Windows 8 I have a rock-solid desktop virtualization product that is easy to set up and manage. Plus I have the added bonus of managing my new Hyper-V environment directly from PowerShell.