Showing posts with label Provisioning Server. Show all posts
Showing posts with label Provisioning Server. Show all posts

Friday, June 14, 2013

Join VSC Created Linked Clones to a Domain

By:Rik Hoffelder

Overview
One of the features of using Citrix's VSC with XenServer and NetApp storage is to take advantage of linked clones. The benefits of doing this are very rapid virtual desktop provisioning while consuming very little storage. When the process is run it doesn't have the ability to name the VM or join it to an Active Directory domain. Rather the machines are created with the typical Microsoft naming standard of some very long unusable name, even though the VM is labeled correctly in the XenCenter console. You could of course manually rename and join each machine to the domain, which is fine if you created just a few. But what if you just created 200? Wouldn't a nice PowerShell script help solve that problem for you? Of course it would, so I wrote one to help one of my customers do just that. Because I'm a nice guy who wants to give back to all those bloggers who have helped me by sharing their knowledge, here it is for you!

One of the major challenges in a script like this is finding the right machine to rename. Remember, as I noted above the machine is labeled in XenCenter correctly, but the actual name in the operating system is completely different. Because of this we need to use the IP address of the newly created VM in order to connect with PowerShell remotely to perform the rename and domain join process. In order to get that information from the VM we would need to know its real name, right? Not with the XenServer cmdlets for PowerShell. With this little toolset I can extract the IP address based on the VM label, not its actual name.

The script is designed to operate on PowerShell 3.0 in order to take advantage of improvements in remote management that doesn't require a lot of security changes and extra configuration to establish the remote session. In fact PowerShell 3.0 offers the capability of performing the VM rename and domain join in a single cmdlet with a single reboot, so it runs much faster than with PowerShell 2.0 that required two separate operations with two reboots to perform the same task.
Obviously the script requires the PowerShell cmdlets for XenServer. So you'll want to download that from here. Now because Citrix does a poor job of documenting the SDK, you'll need this article to help you register the Snapin with PowerShell.

Script Facts
In my script I use a temporary CSV file to build a list of VMs based off the user's input in the GUI. I then run a Foreach loop to process each VM from that CSV file. So make note, you'll either need to modify the script to use your own path or create a C:\TEST directory to store the CSV. The script also creates an import file named oddly enough, IMPORT.CSV in that same directory. The IMPORT.CSV file builds a list of the new VMs so that you may import them into a catalog in XenDesktop. Hey I tried to make this easy!

To run the script you must start PowerShell with elevated rights. In other words it must Run as Administrator from the management computer with the XenServer cmdlets installed and registered. This is a requirement to support the remote calls to the VM using PowerShell 3.0.
There are also a few places you'll need to edit the script to customize it for your environment. First, I create a dropdown menu of target OU aliases so the admin using the script doesn't have to remember a long distinguished name. So you will need to find the following section and update it to match your need:
    
[array]$OUs = "Windows 7 Admin OU - CORP Domain",
"Windows 7 OU - CORP Domain" <-NO COMMA HERE!!

Be sure to include the alias name in quotation marks "Alias" followed by a comma. The last line should not be followed by a comma as noted above.
Next you will need to locate this section to map the alias selected in the dropdown menu to the actual OU path. Update the items highlighted in red below to match your environmental need.
$OUPath = $Combobox.SelectedItem.ToString()

 
If ($OUPath -eq "Windows 7 Admin OU - CORP Domain"){
$OUPath = "OU=Win 7 Dedicated Admin,OU=Virtual Desktops,OU=Workstations,DC=CORP,DC=COM"
}
If ($OUPath -eq "Windows 7 OU - CORP Domain"){
$OUPath = "OU=Win 7 Dedicated,OU=Virtual Desktops,OU=Workstations,DC=CORP,DC=COM"
}


Last but not least, to build the import file you will need to know the connection string used by XenDesktop. To get that connection string you will need to perform an export from an existing catalog. Use this Citrix article as a reference if you aren't familiar with catalog export. Open the export file and use the data highlighted below:
 
  
To replace the value highlighted in red in the code snippet below:
        ### Build XD Catalog Import CSV ###
Write-Host "Building XenDesktop Import CSV"
$XDCsvHeader = "[VirtualMachinePath],[ADComputerAccount],[AssignedUsers]"
$XDConnectBase = "XDHyp:\connections\PVS Task Pool\"


Running the Script
That's it, you are not ready to kick the tires and give it a try. After launching the script a PowerShell-based GUI will open. Complete all of the fields and then click OK.
 

  
You will be prompted to enter the credentials of a user with rights to join machines to the domain:
           
                                                       

 
After clicking OK you will be prompted for the credentials of the local administrator for the VM. This is used to access the VM using PowerShell remoting.

                                     
           
Once you click OK the script takes off and does its thing. When the script has completed it will notify you that the IMPORT.CSV file is ready for import. That's it, enjoy!

Join-Domain:XD.PS1
function
Show-MessageBox ($title, $msg) {

[System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") |
Out-Null


[Windows.Forms.MessageBox]::Show($msg, $title,
[Windows.Forms.MessageBoxButtons]::OK,
[System.Windows.Forms.MessageBoxIcon]::Information,
[System.Windows.Forms.MessageBoxDefaultButton]::Button1,
[System.Windows.Forms.MessageBoxOptions]::DefaultDesktopOnly) |
Out-Null

}

 
[void]
[System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")

 
[void]
[System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")

 

 
## Create and build the form from the function ##

 
    $Form
=
New-Object
system.Windows.Forms.Form
        $Form.Text =
"VSC Rename & Domain Join"
        $Icon
=
[system.drawing.icon]::ExtractAssociatedIcon($PSHOME
+
"\powershell.exe")

        $Form.Icon = $Icon
        $Form.AutoScroll = $True
        $Form.AutoSize = $True
        $Form.AutoSizeMode =
"GrowAndShrink"
# or GrowOnly
        $Form.MinimizeBox = $False
        $Form.MaximizeBox = $False
        $Form.WindowState =
"Normal"
# Maximized, Minimized, Normal
        $Form.SizeGripStyle =
"Hide"
# Auto, Hide, Show
        $Form.ShowInTaskbar = $False
        $Form.Opacity =
1.0
# 1.0 is fully opaque; 0.0 is invisible
        $Form.StartPosition =
"CenterScreen"
# CenterScreen, Manual, WindowsDefaultLocation, WindowsDefaultBounds, CenterParent
        $Font
=
New-Object
System.Drawing.Font("Times New Roman",12,[System.Drawing.FontStyle]::Bold) # Font styles are: Regular, Bold, Italic, Underline, Strikeout
        $Form.Font = $Font

 
    $Label
=
New-Object
System.Windows.Forms.Label
        $Label.Text =
"Enter base Computer Name (i.e., PCX-IT-):"
        $Label.AutoSize = $True
        $Form.Controls.Add($Label)

 
    $Textbox
=
New-Object
System.Windows.Forms.TextBox
        $Textbox.Location =
New-Object
System.Drawing.Size(10,50)
        $Textbox.Size =
New-Object
System.Drawing.Size(260,300)
        $Form.Controls.Add($Textbox)
    
    $Label2
=
New-Object
System.Windows.Forms.Label
        $Label2.Text =
"Enter base Computer Number(i.e., 100):"
        $label2.Location =
New-Object
System.Drawing.Size(10,100)
        $Label2.AutoSize = $True
        $Form.Controls.Add($Label2)

 
    $Textbox2
=
New-Object
System.Windows.Forms.TextBox
        $Textbox2.Location =
New-Object
System.Drawing.Size(10,150)
        $Textbox2.Size =
New-Object
System.Drawing.Size(40,60)
        $Form.Controls.Add($Textbox2)

 
    $Label3
=
New-Object
System.Windows.Forms.Label
        $Label3.Text =
"Enter number of computers created (i.e., 100):"
        $label3.Location =
New-Object
System.Drawing.Size(10,200)
        $Label3.AutoSize = $True
        $Form.Controls.Add($Label3)

 
    $Textbox3
=
New-Object
System.Windows.Forms.TextBox
        $Textbox3.Location =
New-Object
System.Drawing.Size(10,250)
        $Textbox3.Size =
New-Object
System.Drawing.Size(40,60)
        $Form.Controls.Add($Textbox3)

 
    $Label4
=
New-Object
System.Windows.Forms.Label
        $Label4.Text =
"Enter Domain Name (i.e., contoso.com):"
        $label4.Location =
New-Object
System.Drawing.Size(10,300)
        $Label4.AutoSize = $True
        $Form.Controls.Add($Label4)

 
    $Textbox4
=
New-Object
System.Windows.Forms.TextBox
        $Textbox4.Location =
New-Object
System.Drawing.Size(10,350)
        $Textbox4.Size =
New-Object
System.Drawing.Size(260,300)
    $Textbox4.Text =
"na.erac.com"
        $Form.Controls.Add($Textbox4)

 
    $Label5
=
New-Object
System.Windows.Forms.Label
        $Label5.Text =
"Select the target OU:"
        $label5.Location =
New-Object
System.Drawing.Size(10,400)
        $Label5.AutoSize = $True
        $Form.Controls.Add($Label5)

 

[array]$OUs =
"Windows 7 Admin OU - CORP Domain",

"Windows 7 OU - CORP Domain"

 

$Combobox
=
New-Object
System.Windows.Forms.ComboBox

$Combobox.Location =
New-Object
System.Drawing.Size(10,450)

$Combobox.Size =
New-object
System.Drawing.Size (500,300)

Foreach ($Item
in
$OUs){

$Combobox.Items.Add($Item)
}

$Form.Controls.Add($Combobox)

 
    $Label6
=
New-Object
System.Windows.Forms.Label
        $Label6.Text =
"Enter XenServer Host or Pool Master:"
        $label6.Location =
New-Object
System.Drawing.Size(10,500)
        $Label6.AutoSize = $True
        $Form.Controls.Add($Label6)

 
    $Textbox6
=
New-Object
System.Windows.Forms.TextBox
        $Textbox6.Location =
New-Object
System.Drawing.Size(10,550)
        $Textbox6.Size =
New-Object
System.Drawing.Size(260,300)
        $Form.Controls.Add($Textbox6)

 
    $Label7
=
New-Object
System.Windows.Forms.Label
        $Label7.Text =
"Enter XenServer Username:"
        $label7.Location =
New-Object
System.Drawing.Size(10,600)
        $Label7.AutoSize = $True
        $Form.Controls.Add($Label7)

 
    $Textbox7
=
New-Object
System.Windows.Forms.TextBox
        $Textbox7.Location =
New-Object
System.Drawing.Size(10,650)
        $Textbox7.Size =
New-Object
System.Drawing.Size(260,300)
        $Form.Controls.Add($Textbox7)

 
    $Label8
=
New-Object
System.Windows.Forms.Label
        $Label8.Text =
"Enter XenServer Password:"
        $label8.Location =
New-Object
System.Drawing.Size(10,700)
        $Label8.AutoSize = $True
        $Form.Controls.Add($Label8)

 
    $Textbox8
=
New-Object
System.Windows.Forms.TextBox
        $Textbox8.Location =
New-Object
System.Drawing.Size(10,750)
        $Textbox8.Size =
New-Object
System.Drawing.Size(260,300)

$Textbox8.PasswordChar =
'*'
        $Form.Controls.Add($Textbox8)

 
    $OKButton
=
New-Object
System.Windows.Forms.Button
        $OKButton.Location =
New-Object
System.Drawing.Size(100,800)
        $OKButton.Size =
New-Object
System.Drawing.Size(90,60)
        $Font1
=
New-Object
System.Drawing.Font("Times New Roman",10,[System.Drawing.FontStyle]::Regular) # Font styles are: Regular, Bold, Italic, Underline, Strikeout
        $OKButton.Font = $Font1
        $OKButton.Text =
"OK"
        $OKButton.Add_Click({$x=$TextBox.Text;$Form.Close()})

 

$Form.Controls.Add($OKButton)

$Form.ShowDialog()

 
###Build Computer Name Varibles ###
$BaseCompName
=
$Textbox.Text
$BaseCompNum
=
$Textbox2.Text
[String]$ComputerName =
[string]$BaseCompName +
[string]$BaseCompNum
$NumComputers
=
$Textbox3.Text
[Decimal]$b =
[Decimal]$BaseCompNum +
[Decimal]$NumComputers

 
### Varibles to join PC to domain ###
$Credential
=
Get-Credential
-Message
"Enter Domain Account"
-UserName
"CORP\USER"
$Domain
=
$Textbox4.Text

 
### XenServer Varibles ###
$XenHost
=
$Textbox6.Text
$XenUser
=
$Textbox7.Text
$XenPwd
=
$Textbox8.Text

 
### Translate OU selection to actual OU distinguishedName ###
$OUPath
=
$Combobox.SelectedItem.ToString()

 

If ($OUPath
-eq
"Windows 7 Admin OU - NA Domain"){

$OUPath
=
"OU=Win 7 Dedicated Admin,OU=Virtual Desktops,OU=Workstations,DC=CORP,DC=COM"
}

If ($OUPath
-eq
"Windows 7 OU - NA Domain"){

$OUPath
=
"OU=Win 7 Dedicated,OU=Virtual Desktops,OU=Workstations,DC=CORP,DC=COM"
}

 
### Check for Comps.CSV, if it exists remove it! ###
$CSV
=
Test-Path
C:\Test\Comps.CSV

 
if ($CSV
-eq
"True") {
    Remove-Item
C:\Test\Comps.CSV
}

 
$Column
=
"Name,IP"
Add-Content
C:\Test\Comps.CSV
$Column

 
#Import-Module "C:\Program Files\Microsoft System Center 2012\Virtual Machine Manager\bin\psModules\virtualmachinemanager\virtualmachinemanager"

 
Add-PSSnapin
XenServerPSSnapIn
Connect-XenServer
-Server
$XenHost
-UserName
$XenUser
-Password
$XenPwd

 
### Loop through each computer name and get its IP address. Add the name and IP to the CSV ###
Do {$vm
=
Get-XenServer:VM
-Server
$XenHost
-NameFilter
$ComputerName
    ;$arr
=
Get-XenServer:VM_guest_metrics.Networks
-VMGuestMetrics
$vm.guest_metrics
    ;$IP
=
$arr["0/ip"]
    ;$AddComp
=
$ComputerName
+
","
+
$IP
    ;Add-Content
C:\Test\Comps.CSV
$AddComp

 
    ;[Decimal]$NewCompNum =
[Decimal]$BaseCompNum +
1
    ;[String]$BaseCompNum =
[String]$NewCompNum
    ;$ComputerName
=
$BaseCompName
+
$BaseCompNum
}
Until ($NewCompNum
-eq
$b)

 
### read from CSV and list comps ####
$VMComps
=
Import-CSV
C:\Test\Comps.CSV
$LocalCred
=
Get-Credential
-Message
"Enter the Local Admin Account"
-UserName
"ADMINISTRATOR"

 
### Rename/restart each VM ###
Foreach ($VMComp
in
$VMComps) {

Rename-Computer
-ComputerName
$VMComp.IP -NewName $VMComp.Name -Force
-LocalCredential $LocalCred


Add-Computer
-ComputerName
$VMComp.Name -Credential $Credential
-DomainName
$Domain
-OUPath
$OUPath
-LocalCredential
$LocalCred
-Restart
-Options
JoinWithNewName
}

 

 
### Build XD Catalog Import CSV ###
Write-Host
"Building XenDesktop Import CSV"
$XDCsvHeader
=
"[VirtualMachinePath],[ADComputerAccount],[AssignedUsers]"
$XDConnectBase
=
"XDHyp:\connections\PVS Task Pool\"

 
$XDCSV
=
Test-Path
C:\Test\Import.CSV

 
if ($XDCSV
-eq
"True") {
    Remove-Item
C:\Test\Import.CSV
}

 
Add-Content
C:\Test\Import.CSV
$XDCsvHeader

 
Foreach($VMComp
in
$VMComps){

$XDCsvLine
=
$XDConnectBase
+
$VMComp
+
".vm,NA\"
+
$VMComp
+
"$"

Add-Content
C:\Test\Import.CSV
$XDCsvLine
}
Write-Host
"XenDesktop Import CSV Complete."
Write-Host
"The file, IMPORT.CSV, is located on C:\TEST\"

 

 
### Remove host affinity so it'll failover properly! ###
Foreach ($VMComp
in
$VMComps){

Set-XenServer:VM.Affinity
-VM
$VMComp
-Server
$NULL
}

 
####### Done! #####
Write-Host
"Completed"



More information on PowerShell


Read more!

Saturday, April 24, 2010

SCCM on XENDesktop or PVS Standard Target Devices

By:Rick Rohne
Have you ever tried to manage your XENDesktop or PVS target devices using SCCM? In some ways, managing the devices using SCCM is irrelevant due to the nature of how PVS works, but low and behold, I've run into a few companies that insist on using SCCM for inventory management and application installation. The SCCM client, however, does not work well in a streamed OS environment. If you've ever tried installing the SCCM client on a PVS image, you will notice that SCCM shows new machines with the same name in its collections every time a PVS target device reboots in standard mode. This is because the SCCM client changes the GUID when an imageis pushed to new hardware. SCCM uses the GUID to keep track of Physical Hardware devices.

Overview how SCCM works
To give you an idea how it works, SMS uses the GUID of the computers to associate the Computer and OS with the SMS object. This GUID is stored in the c:\windows\SMSCFG.ini file.

The GUID can be read from this file, also by querying WMI using this vb script.
----------------------------------------------------------------------------------------------------------------------------------
strComputer = "."
strNameSpace = "root\ccm" strClass = "CCM_Client=@" Set objClass = getObject("Winmgmts:{impersonationlevel=impersonate}!\\" & strComputer & "\" & strNameSpace & ":" & strClass)
strGUID = objClass.ClientID
Wscript.Echo strGUID
Set objClass = Nothing
-------------------------------------------------------------------------------------------------------------
The problem we see is in a Citrix Provisioned desktop, this file comes up with a duplicate GUID each time. This causes the SCCM client t re-generate theGUID and create a new file on every boot.
You can find this information here http://support.microsoft.com/kb/837374

The Fix
In order to persist the computers GUID, you must be using “cache to targets hard drive” when you place your systems in standard mode. We use the hard drive to save the SCCMCFG.ini file after each reboot.
This also means that "cache to RAM" or "cache to Server" will not be sufficient because the cache will be purged on every reboot.

Step 1.
To resolve this, first, you have to run a script when switching from private mode to standard mode. This is done by the XENDesktop Admin after he modifies the default image…
This script stops the SCCM service and deletes the c:\windows\SCCMCFG.ini file.
'--------------------------- SCCM Cleanup.vbs--------------------------------------
'Stop SCCM client strServiceName = "CCMExec"
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
Set colListOfServices = objWMIService.ExecQuery("Select * from Win32_Service Where Name ='" & strServiceName & "'")
For Each objService in colListOfServices objService.StopService() Next ' Cleanup SCCM Set fso = CreateObject("Scripting.FileSystemObject") Set aFile = fso.GetFile("c:\windows\SMSCFG.ini") aFile.Delete
----------------------------------------------------------------------------------------
Step 2.
Now, you have to run a shutdown script and startup script that basically places the c:\windows\SCCMCFG.ini file on the Cache drive on shut down. When the computer boots up, it will check to see if the file exists on the cache drive. If it does not, the SCCM client will register itself to the SCCM server and create a new c:\windows\SCCMCFG.ini file. Upon shutdown, the c:\windows\SCCMCFG.ini file is copied to the cache drive.

This is a simple batch file script that can be loaded into active directory as a computer startup script for the OU where XENDesktop computers reside.

Startup Script
IF EXIST G:\SMSCFG.ini COPY G:\SMSCFG.ini C:\Windows\SMSCFG.ini /y > c:\smserror.txt

Shutdown Script
COPY c:\windows\SMSCFG.ini G:\SMSCFG.ini /y > g:\smserror.txt

Now computers that are manged by SCCM will show up as unique entries in the SCCM database.
NOTE: This was tested with SCCM 2007 R2, PVS 5.1, and XENDesktop 4


More information on Provisioning Server

Read more!

Symantec Endpoint Protection on XENDesktop and PVS target devices

By:Rick Rohne
I’ve recently come across a couple of companies trying to install Symantec Endpoint Protection on their XENDesktop PC’s, and finding a very annoying outcome. First of all, the SEP client does not update completely or not at all, the SEP client blue screens during the installation, and/or the SEP manager display multiple entries in the database for the same host. There are a few root problems when installing the SEP client to a PXE booted shared image, and I was determined to find the answers…


Problem


After installing Symantec on a base image in XENDesktop, the client computers appear more than once in the Symantec console. This continues to happen after every boot. Alternatively, if you try to install Symantec SEP while booted to the network, you may receive a blue screen after the first reboot.
Solution
Boot your VM using Microsoft Hyper-V or perform a reverse image when performing Symantec Endpoint Protection Installation.  This is required because SEP modifies the NIC drivers during installation.  Next, Clean up the registry after the first boot as to allow the image to re-register with a unique Hardware ID for each Virtual Desktop.

Step by Step

1. Import your XENDesktop OU
To ensure that your Virtual Desktops get the policies that are assigned, I recommend using the Symantec Endpoint Protection Manager Active Directory Import tool to import the OU for your XENDesktop computers. This will allow the OU to have custom policies and that will tailor to the XENDesktop farm.
Once you have the XENDesktop OU imported, you will see existing clients, and you can have the option to scan for new clients as they are added. The main reason for creating this OU is to ensure that the clients get a specific policy.

2. Configure your policies
I found that the High performance policy Template gives you the best policy for your Virtual Desktops. After duplicating the policy, you can modify the new policy with a few additional settings.

  • In the File System Auto Protect, change the default settings of “Load Auto-Protect” to Symantec Endpoint Protection Start.

  • Exclude the .vdiskcache file if you are performing the write cache on the computer’s hard disk.
  • Since these Virtual desktops will always come up with the default image, you can exclude any scheduled scans. This will ensure that your virtual desktops have the best performance possible.

3. Next, assign the policy to the new XENDesktop Group:


Using the SEP Manager Tool, you can right click on the policy and assign it to your XENDesktop group.

4. Prepare your image
NOW you are ready to boot the client and install the SEP client software.

First, boot the client using Microsoft Hyper-V. (For information on how to use Hyper-V to update offline vDisks, see http://www.thegenerationv.com/2010/02/using-hyper-v-for-pvs-vdisk-offline.html

5. Deploy the client to your Virtual PC
Perform the client deployment manually, ensure that the client deployment is visible to the end user as to ensure that you do not shut down before the client is finished installing.

Once installed, perform a reboot and allow the client to come back online. Then you must manually delete the unique registry keys and xml files that associate this computer name to Symantec SEP Manager.

6. Perform Registry and file system cleanup
  • Install the Symantec Endpoint Protection Client after all of the other installations are complete.
  • Before you save the image, start the "Registry Editor."
  • Locate and delete the following registry key:
          HKLM\SOFTWARE\Symantec\Symantec Endpoint Protection\SMC\SYLINK\SyLink\HardwareID
Reference:
http://service1.symantec.com/support/on-technology.nsf/854fa02b4f5013678825731a007d06af/0e2c1c8989fe2a268825748a004a565c?OpenDocument











  • Exit the "Registry Editor."
  • Delete the C:\program Files\Common Files\Symantec Shared\HWID\sephwid.xml file
  • Shut down the VM and publish the vDisk as a standard image.
  • Create a batch file for your XENDesktop PC’s that will delete these entries. You can publish this batch file as a shut down script to ensure that the PC removes these entries every time the machine is shut down. Alternatively, you can just run these scripts when you are running in private mode before transitioning to standard mode.
  • You will most likely see new entries show up for the Virtual Desktops in the Endpoint Protection Manager. This is because the hardware is virtual and will continue to change after every reboot. Therefore, it is important for you to perform a Desktop Group Sync when you are running reports. If this is completely un-manageable for your organization, you can also setup personalities for each of your virtual desktops that include the same hardware ID. This process will require you to run a script to import the Hardware ID into the registry on each boot.

 
 
 
 
 
 
 
 
 
 
 
 
 
 

7. Verify Functionality
After you perform these procedures, you should see that all updates take place and that the correct policies are assigned to the desktops



 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Reference:
http://service1.symantec.com/support/ent-security.nsf/854fa02b4f5013678825731a007d06af/7c87b2b11e0d18c48025765000518741?OpenDocument

http://service1.symantec.com/SUPPORT/ent-security.nsf/docid/2007110510364248

SEP Registration Process




More information on Provisioning Server


Read more!

Thursday, March 25, 2010

Learn XenDesktop 4 on Hyper-V 2.0 for Free!

By:Rik Hoffelder
Microsoft recently released a new lab as part of their TechNet Virtual Lab series that allows you to learn how to integrate Citrix XenDesktop 4 with Hyper-V 2.0. As regular readers of this site know, The Generation V has touted Citrix and Microsoft as “Better Together” for some time. This free 90 minute virtual lab will allow you to learn how these two products integrate and how easy it is to deploy and manage your VDI environment. You’ll see why we believe this.

The virtual lab walks you through System Center Virtual Machine Manager, Citrix Delivery Services, and Citrix Provisioning server. This coupled with a Hyper-V 2.0 virtualization platform makes for a solid operating and management infrastructure. What makes this even better is you have the opportunity to explore other aspects of these applications and services; you don’t have to follow the lab steps necessarily, although I strongly recommend it your first time through.

You can access this free lab here. Microsoft offers many other virtual labs on a wide range of products at no charge. Many labs are pre-configured for a specific situation, such as an Exchange migration, or SQL upgrade, while others a fully install and preconfigured giving you an opportunity to try a product without investing time in building your own lab. This is a great learning tool and it’s FREE! Yes there is a catch, isn’t that always the case? So what is it? Well the labs are time limited, after time expires it resets, but you can run them as often as you like. Did I mention it’s FREE? So, what are waiting for, browse on over and give one a try today!



More information on Hyper-V




Read more!
Microsoft Virtualization, Citrix, XENServer, Storage, iscsi, Exchange, Virtual Desktops, XENDesktop, APPSense, Netscaler, Virtual Storage, VM, Unified Comminications, Cisco, Server Virtualization, Thin client, Server Based Computing, SBC, Application Delivery controllers, System Center, SCCM, SCVMM, SCOM, VMware, VSphere, Virtual Storage, Cloud Computing, Provisioning Server, Hypervisor, Client Hypervisor.