Showing posts with label XENDesktop. Show all posts
Showing posts with label XENDesktop. 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!

Monday, March 7, 2011

XenDesktop 5 Deep Dive: Machine Creation Services on vSphere 4.1

By: Andy Paul

When XenDesktop Desktop Studio is configured, a hosting infrastructure and storage system is defined. This hosting infrastructure can be Citrix XenSerspver, VMWare ESX/vSphere, or Microsoft Hyper-V. Storage for use by XenDesktop is also defined, which can be local storage or shared storage. In a production vSphere environment, shared storage defined as VMWare Datastores is preferred.

When using Machine Creation Services (MCS) in XenDesktop 5 Desktop Studio, a Master Image is identified when a Catalog is created. MCS Catalogs can be designed for Dedicated or Pooled virtual desktops. Pooled Assignments can be set for static assignment or random access.

Dedicated Catalog virtual desktops retain all changes, including software installations and local data, in a local difference disk. Pooled Catalog virtual desktops do not retain changes, the difference disk is reset upon reboot, leaving only a copy of the master image. However, when using pooled desktops, the base image can be updated allowing changes from the master disk to be replicated to the deployed VMs, providing for centralized patch and application management. Each deployed image, whether pooled or dedicated, will also contain an identity disk; all deployments utilize thin provisioning.

The following chart highlights the benefits of each type of XenDesktop Catalog:

Graphic taken from CTX127587: XenDesktop 5 - Reference Architecture

During this test implementation, two Dedicated Catalogs are used to pilot XenDesktop 5. One catalog will be based on Windows XP, the other catalog will be based on Windows 7. These catalogs and the dedicated machines will be assigned to Desktop Groups for different business units.

Master Image Utilization
Once a master image is identified as part of the Catalog creation, a private-use clone of the VMDK is created for use by the catalog machines. This cloned disk is separate from the Master Image VM, allowing that VM to be updated or deleted with no impact on the MCS deployed virtual desktops.

This master image clone is copied to each Datastore defined during XenDesktop site setup. This site definition can be modified to include additional storage as it becomes available. If five datastores are defined the clone will be created on the first Datastore and then copied to the remaining four.

Each catalog is linked to its own master image clone. If multiple catalogs are defined, then multiple master clones will be generated. Any additional machines created within a catalog will use the defined master image. A master image can be changed to a different disk using the following command in PowerShell: Publish-ProvMasterVmImage (click here for an example of using this command if necessary.) This change would only impact new machines created in the catalog, not existing machines already generated.

Impact on Storage
Since MCS uses thin-provisioning, using Pooled or Dedicated desktops should require less storage than existing VM creations. On vSphere, the MCS service creates a snapshot for each VM called “Do Not Delete – Critical.” This snapshot is a reversion point back to initial deployment. For Dedicated desktops, additional snapshots can be created using vCenter’s Snapshot Manager functionality.

The master image, stored on each Datastore, becomes a private-use read-only VMDK for each MCS created VM. Depending on the NAS/SAN functionality, this image may be deduplicated or moved to high-utilization storage due to the increased read ratios.

For Pooled machines, the snapshot growth will be limited since it is reset at each reboot. Dedicated machine snapshots will grow over time as changes to the virtual desktop occur. It is recommended to incorporate profile management and data redirection where possible in either scenario to increase user flexibility and reduce data changes inside the images.

Determining Storage Requirements
Since MCS uses thin-provisioning, only the amount of space required is actually used, allowing for a potential of over-allocation of storage. When analyzing storage utilization, the key item to examine is the snapshot space utilized by each VM. Since the master image is shared, this is a “fixed” cost, where snapshot growth will be dynamic.

Please note, a snapshot can grow as large as the base disk, so if the master image is 40 GB in size, the associated snapshot for a dedicated machine can grow up to 40 GB in size; effectively doubling storage requirements if left unmanaged.

To see snapshot space utilized in vCenter, select the Datastore in question, select the Storage Views tab. This view will show the space used for each virtual machine as well as snapshot space used. For MCS created machines, the space used is misleading, since it is also counting the base image size. In the example below, the master image is 40 GB in size. For VXPXDTest002 (highlighted), the Space Used is 46.11 GB, but the actual space used is really 6.11 GB since 40 GB is for the shared master image. Of the 6.11 GB used, 4.09 GB is snapshot space.
To see more exact detail, you can browse the Datastore, examining the folder for VXPXDTest002, as shown below. Notice the total space used which is the active snapshot plus the memory swap file. The base image is stored in its own folder:

Sizing Wizard
Along with this analysis, I have created an Excel worksheet called
MCS Sizing Wizard. This worksheet will help determine the size required for MCS deployed dedicated machines. The basic formulas are:
    Determine size requirements for master image:
    ..... [VMDK Size] * [# of Datastores]
    Determine size requirements for deployed virtual machines:
    ..... Create estimates for low, medium, and high usage snapshots
    ..... Per machine: [identity disk] + [RAM swap file] + [estimated size of snapshot]
    ..... Total VM sizing: [# of VMs] * [Per Machine Estimates]
    Determine total storage requirements
    ..... Most likely storage: [Expected VM storage] + [Master image storage]
Using the worksheet, creating 120 Windows 7 dedicated machines, spread across 5 datastores, with a 40 GB master VMDK, 4 GB RAM and an average snapshot size of 15 GB would use 2.4 TB of storage out of a maximum provision of 5.4 TB of storage. If using standard (existing) VMs, the same number of machines would use approximately 5.1 TB of space, for a net savings of 2.8 TB of utilized SAN storage. Using the worksheet, creating 120 Windows 7 dedicated machines, spread across 5 datastores, with a 40 GB master VMDK, 4 GB RAM and an average snapshot size of 15 GB would use 2.4 TB of storage out of a maximum provision of 5.4 TB of storage. If using standard (existing) VMs, the same number of machines would use approximately 5.1 TB of space, for a net savings of 2.8 TB of utilized SAN storage.

About this Article
The purpose of this article is to summarize the underlying architecture and impact of using Machine Creation Services in a pilot environment. This article is not intended to replace the XenDesktop Admin Guide or the XenDesktop PoC Implementation Guide.

The scope of this article is to help understand and manage the virtual machines created by MCS as well as understanding the storage requirements when using MCS. The actual amount of storage will grow over time as the snapshots grow and should be managed appropriately. Any sizing numbers are for illustrative purposes only and are no way intended as definitive calculations.

To help with the additional planning, design and optimization areas, it is recommended to utilize the XenDesktop Design Handbook Success Kit.

Additional References
XenDesktop 5 hosted-virtual desktop architecture series
XenDesktop 5 scalability: Site Capacity
PVS or MCS: We Are Talking About IOPS Again
PVS or MCS: Operations Is Important
Provisioning Services or Machine Creation Services: Big Picture Matters
XenDesktop 5 Virtual Machine Creation Services on vSphere 4.1

Read more!

Sunday, July 25, 2010

IPad works as a Systems Administrator Tool

By: David Merrell
Last couple weeks I have been traveling back and forth to a client. During my trips I sat in the airport for several hours being bored and really did not want to break out the big 17 inch, 5 Pound laptop to get ahead of some work for a project I was working on. So I was needing something to help to accomplish this while waiting for my plane. The project I was working on was a XenDesktop, XenApp POC for a university in north Texas. My boss has an IPAD and was showing off the Citrix Receiver and Citrix Dazzle a few weeks earlier. I started thinking it would be nice to have a light weight easy to use tool to help me instead of the laptop. Next trip to Texas I picked up a 64 Gb IPAD. The sales guy was asking what I was going to use it for, I told him business mainly and of course he tried to sell me the 3G version. I figured I have an awesome HTC Touch Pro 2, Windows Mobile phone which acts as a wireless access point, so didn't need the 3G charge. Here is the scenario that I used the IPad as an administrator tool: I was able to remote into all the infrastructure servers using for the environment finish configuration using Desktop Connect. I was able to use the Citrix Receiver to connect to a published Citrix XenCenter to administer the XenServers. The Citrix Receiver also allowed me to test the published XenApp applications and desktops; it also allowed me to test the XenDestops. The IPad and the listed apps below is a great set of tools to allow me to provide better support to our customers and be more efficient on the projects I work on.


Here is a list of the apps and descriptions, I installed and use just for the purposes:

APP

Review

Desktop Connect

Desktop Connect is a fast, full-featured desktop viewer, optimized specifically for the IPad. View and control Windows, Mac OSX and Linux computers as if you were sitting in front of them, or observe others as if you were watching over their shoulder.

Desktop Connect is one of the best remote applications I have installed. As a systems administrator the RDP connection was easy to configure and use. The speed of the app is very efficient.

LogMeIn Ignition

One click on your iPad lets you remotely access one or more computers anywhere, anytime.

LogMeIn is a client based app that allows access to systems that may not have the ability to RDP or restricted by firewalls, I mainly use this app for my home network. This app provides another layer of security, it also was easy to setup and configure.

Citrix Receiver

Citrix Receiver for IPad is the perfect business solution for secure access to virtual desktops, applications and data.

As a Systems Engineer that works with XenDesktop, XenApp and XenServer setting up an administration group of apps and XenDesktop to support an environment the Citrix Receiver makes it easier to connect to tools such as the Citrix admin consoles.

Vtrace

Vtrace is a visual traceroute application that shows a list of the networks serves from your machine to a target ip address or hostname on a google map.

This application is a great visual traceroute program, it works well as a network troubleshooting app.

DNS Lookup Tool

DNS lookup tool to find A records, MX records, Name Servers and reverse DNS records for IP addresses and domains.

The description pretty much says it all. At the time of writing this article, this is only an IPhone up but works well with the IPad.

FreePing

FreePing is an ICMP Ping Application. It is designed to have a simple and intuitive user experience.

Again pretty much works as the description says, it also is only for the IPhone at the time of the writing.

Mocha Telnet Lite

Mocha Telnet provides access to servers via Telnet

This is a good tool to telnet to ports on servers to make sure all the necessary ports are accessible.

iXen

This App helps you administrate common tasks on virtual machines running on a Citrix XenServer.

The main functions of this app allow you to Boot, Shutdown, Suspend, Rest and Turn off virtual machines. This is a handy tool if you do not have access to the XenServer console.



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.