ITPro: How to Convert your Surface RT to Surface Pro – Part 1


From long time I’ve started to have all my labs on Windows Azure (will share that experience in another blog), my main motive was to get rid of my heavy ugly laptop to a light and thin one. My first pilot was to use Surface as the replacement of my laptop.
For some reason (I don’t remember it now) I’ve decided to get Surface RT not Surface Pro, I’m trying to convince myself now that RT lighter, RT is 676 grams compared to 907 grams for the Pro.
But anyway here it is my RT device, I loved the experience and the display but the second day I looked for PowerShell ISE and couldn’t find it, PowerShell ISE was my magical solution to connect to Office 365 so it’s mandatory for me. The result: PowerShell ISE is not built in with Windows RT and can’t be installed from the store.
Ok no ISE let’s install the PowerShell Module for Azure (Windows Azure VMs cmdlets) and PowerShell Module Windows Azure AD (Office 365 module), obviously you can’t install anything to RT.
The huge one when I started to look for Visio and Project Pro, and yes both are not part of Office pro which installed on the Surface and are not available on the Store. Now it’s serious I can’t work without these programs.
I started to look for a solution and first thing came to my mind is to RDP to another machine running on Azure that have everything I need, nice Idea and worked fine but annoying as you need to share the files (copy it or send it by email) between the 2 PCs, didn’t like the overall experience.  
I was reading some of the new staff on Windows 2012 when I thought of RemoteAPP, what if I’ve a server on Azure running Remote App and I can use all my applications.
First things first, what is RemoteApp:
RemoteApp programs are programs that are accessed remotely through Terminal Services and appear as if they are running on the end user's local computer. Instead of being presented to the user in the desktop of the remote terminal server, the RemoteApp program is integrated with the client's desktop, running in its own resizable window with its own entry in the taskbar. Users can run RemoteApp programs side-by-side with their local programs. If a user is running more than one RemoteApp program on the same terminal server, the RemoteApp programs will share the same Terminal Services session.
In simple words I will have Visio installed on the server in Azure, on my Surface when I click for Visio, I will open RDP session in the background which will run Visio on the server and present it in my Surface RT as if it is installed locally, that is the magic solution that I was looking for.
Users can access RemoteApp programs in several ways. They can:

1. Access a link to the program on a Web site by using TS Web Access.

2. Double-click a Remote Desktop Protocol (.rdp) file that has been created and distributed by their administrator.

3. Double-click a program icon on their desktop or Start menu that has been created and distributed by their administrator with a Windows Installer (.msi) package.

4. Double-click a file where the file name extension is associated with a RemoteApp program. This can be configured by their administrator with a Windows Installer package

I always go for the easiest solution so of course number 3 is my choice the programs will be on my Start menu as they are installed on my Surface.
My target with this article is the ITPro, if you are with MSDN subscription you can activate your free hours on Windows Azure, check this for the details:
In my lab on Azure I’ve decided to use one of my servers as the RemoteAPP server.
To have the RemoteApp we will need the following components (logical as roles not physical as number of servers):

1.  RD Session Host: Remote Desktop Session Host (RD Session Host), formerly Terminal Server, enables a server to host Windows-based programs or the full Windows desktop. Users can connect to an RD Session Host server to run programs, to save files, and to use network resources on that server.

2.   RD Web Access: Remote Desktop Web Access (RD Web Access), formerly TS Web Access, enables users to access RemoteApp and Desktop Connection through the Start menu on a computer that is running Windows 7 or through a Web browser. RemoteApp and Desktop Connection provides a customized view of RemoteApp programs and virtual desktops to users.

When a user starts a RemoteApp program, a Remote Desktop Services session is started on the RD Session Host server that hosts the RemoteApp program.

3.  RD Connection Broker [Optional]: The RD Connection Broker database stores session state information that includes session IDs, their associated user names, and the name of the server where each session resides. When a user with an existing session connects to an RD Session Host server in the load-balanced farm, RD Connection Broker redirects the user to the RD Session Host server where their session exists. This prevents the user from being connected to a different server in the farm and starting a new session.

RD Connection Broker is also used to provide users with access to RemoteApp and Desktop Connection.

4.   DC: of course a Domain Controller is needed.

5.  Trusted Certificate [Optional]: if you don’t want to get a warning on the certificate you will need to get a commercial certificate. Otherwise you can use an internal generated certificate and configure your Surface to trust the Root/Issuing CA.

6.   DNS Record: you will need DNS record Points to your server.

The RD Connection Broker is an optional as in our step we will use a single server that hosts everything, so the same server can monitor the sessions without the need of the RDCB. However in Windows 2012 the standard setup or the quick setup both will include RDCB as the recommended installation thus we are going to use it. If you are using Windows 2008 R2 or if you will use a custom installation you can choose not to install it and only use the RDSH and RDWA.
Let’s not waste any more time, hereunder are the steps:

1.  Install the required roles: I will use Windows 2012 so on the dedicated machine:

a. Click Add Roles> Select Remote Desktop Services Installation:


b. Then select Standard deployment:


c. Select Session-based desktop Deployment:


d.  Under Role services the wizard will install the three roles: RDSH, RDWA and RDCB, as the following snapshot:



e.  Click Next.

f.  Only if you get the following error continue with the following steps, if you didn’t get error then skip to step i. Error:

“Unable to connect to the server by using Windows PowerShell remoting”

The following snapshot shows the error:


g.      Start PoerShell as Administrator, and run the following cmdlet:

Enable-PSRemoting -force
Set-Item WSMan:localhostShellMaxMemoryPerShellMB 1000

h.      The following snapshot shows the cmdlets:


i.   In RD Connection Broker: select the server name as the following snapshot:


j.    Do the same by adding the selected server in the RD WA and RD SH.

k.   On the confirmation page click to restart the server after the installation and click Deploy to start the installation.

In this part we have installed Remote Desktop Services, in next part we will configure the server for RemoteApp.
Links to All Parts:
Part 1: Install Remote Desktop Services
Part 2: Configure RemoteApp
Part 3: Configure Surface