Windows 8 terminal server setup

So, Im guessing most have tried the windows 8 beta now ? 🙂
I am so far impressed with the new features that are implemented. Still things could change before the final release. I thought I would take a quick walk trough on the windows 8 server remote desktop services installation.

To start the installation go the the Dashboard of the server manager, and choose add features and roles. From here choose Remote Desktop Services scenario-based innstallation.
(Im missing a screenshot from the next part, but you have the option to choose quick install. This will install all the roles on 1 server.

Here I’ve finished the installation, and I’ve added the other server to the Dashboard view, now from here I get shown all the different roles both of them have on the left side. And if I choose to mark one of them I get the event log from that spesific server.

If I go into the Remote Desktop Services Role on the left side, I get an overview over the infrastructure. As you can see this server has the

  • RD Web Access
  • RD Connection Broker
  • RD Session Host

If I press the + sign I get the option to add that spesific role.
But for my purpose I only need those 3 roles I already have installed.

By default the installation creates a «Collection» which is basicly a collection of computer which have some application published.

By default the «QuickSessionCollection» has most of the Administrative Tools already published so If you go to the webpage of the RD Web Access.
https://server/rdweb and login you will get most of the administrative tools avaliable.

But for my part I want to publish applications that people actually use 🙂
So I deleted the default collection, created one of my own, and added mspaint.

As you can see here, you get an overview of which server are in this collection and which applications are in this collection. It also shows you who is connected.  Now this is something Windows didn’t have before, earlier you couldn’t see all the connected users to a farm.

First of, when you publish an application you have the option to add it to a folder, this folder will appear in the RDweb page. Gives you a bit more options regarding where to place the application. So you don’t have to place all your 100+ apps on one webpage.

All is well, and when I go back to the Dashboard, I see both of my servers in the overview. This is something I actually might get used to.

Stay tuned in for more.

#dashboard-view, #desktop-services, #rd-session, #session-host

Powershell for remote desktop services

With Microsoft RDS its hard to manage a large infrastucture since you need to manage each server individually. If you have Citrix you have a single console to do everything. But with Windows you have one server that has the Web-interface, you have one server that has the load-balancing role ( broker ) and then you have each TS.

So if you need to do changes to a farm, you would have to logon to the spesific server to remove it from the farm. Of course this would be a pain in the a** if you didn’t have Powershell 🙂

Microsoft has done great job to provide Powershell cmdlets for almost every server role in Windows 2008.

You can see the cmdlets avalible here ->

But let’s say you want to script a server to join a spesific farm and it will participate in load-balancing, and publish 3 custom applications to display on the  webinterface.

First of you  have to import the module for rds.

Import-Module RemoteDesktopServices

Then you have to change to a virtual directory rds

set-location rds:

If you do a dir there you will see what it contains.

PS RDS:\> dir
Directory: RDS:
Name Type CurrentValue GP PermissibleValues PermissibleOperations
—- —- ———— — —————– ———————
RDSConfiguration Container – Get-Item, Get-ChildItem
RemoteApp Container – Get-Item, Get-ChildItem

The container RDSconfiguration contains the settings in the Remote Desktop Session Host Configurtion and the RemoteApp contains the same for RemoteApp Manager 🙂
And since they are containers you can’t do much at this level. So If we change to Remoteapp manager.

Directory: RDS:\RemoteApp dir
Name Type CurrentValue GP PermissibleValues PermissibleOperations
—- —- ———— — —————– ———————
Port Integer 3389 – 1-65535 Get-Item, Set-Item
ServerName String  – Get-Item, Set-Item
ColorDepth Integer 5 – 1, 2, 3, 4, 5 Get-Item, Set-Item
AllowFontSmoothing Integer 1 – 0, 1 Get-Item, Set-Item
CustomRDPSettings String authentication le… – Get-Item, Set-Item
DisableUnlistedPrograms Integer 0 No 0, 1 Get-Item, Set-Item
RDPSetting String redirectclipboard… – Get-Item
DeviceRedirectionSettings Container – Get-Item, Get-ChildItem
RemoteDesktopAccess Container – Get-Item, Get-ChildItem
DigitalSignatureSettings Container – Get-Item, Get-ChildItem
GatewaySettings Container – Get-Item, Get-ChildItem
RemoteAppPrograms Container – Get-Item, Get-ChildItem, New-Item
WebAccessComputers Container – Get-Item, Get-ChildItem, New-Item

If you want to change a setting here. You can use the Set-item name and value.
set-item port 3388 (This will change the port RDP uses)

Publishing an application

So in order to publish a application here. We will have to change to the RemoteAppPrograms directory. And use the command.

PS RDS:\RemoteApp> new-item .\RemoteAppPrograms -name ‘calc’ -applicationpath c:\windows\system32\calc.exe

This  will create a remoteapp and by default it will publish it to Remote Desktop Web Interface.
We can look at the settings by moving to the calc folder and do dir.

PS RDS:\RemoteApp\RemoteAppPrograms\calc> dir
Directory: RDS:\RemoteApp\RemoteAppPrograms\calc
Name Type CurrentValue GP PermissibleValues PermissibleOperations
—- —- ———— — —————– ———————
DisplayName String Windows Calculator – Get-Item, Set-Item
Path String c:\windows\system… – Get-Item, Set-Item
PathExists Integer 1 – 0, 1 Get-Item
IconPath String c:\windows\system… – Get-Item, Set-Item
IconIndex Integer 0 – Get-Item, Set-Item
IconContents String 0,0,1,0,5,0,64,64… – Get-Item
CommandLineSetting Integer 0 – 0, 1, 2 Get-Item, Set-Item
RequiredCommandLine String – Get-Item, Set-Item
ShowInWebAccess Integer 1 – 0, 1 Get-Item, Set-Item
RDPFileContents String redirectclipboard… – Get-Item
UserAssignment Container – Get-Item, Get-ChildItem, New-Item

Something we should have done before publishing the application is to join the server to a farm and participate in load-balancing.

First we can look at the settings for the server.

PS RDS:\RDSConfiguration\ConnectionBrokerSettings> dir
Directory: RDS:\RDSConfiguration\ConnectionBrokerSettings
Name Type CurrentValue GP PermissibleValues PermissibleOperations
—- —- ———— — —————– ———————
ServerPurpose Integer 0 No 0, 1, 2, 3 Get-Item, Set-Item
FarmName String No Get-Item, Set-Item
LoadBalancingState Integer 0 No 0, 1 Get-Item, Set-Item
ServerWeight Integer 100 No 100-10000 Get-Item, Set-Item
ConnectionBroker String No Get-Item, Set-Item
IPAddressRedirection Integer 1 No 0, 1 Get-Item, Set-Item
CurrentRedirectableAddresses Container – Get-Item, Get-ChildItem, New-Item
RedirectableAddresses Container – Get-Item, Get-ChildItem

In order to make a server join the farm, you have to type the command.
Set-item -path RDS:\RDSconfiguration\ConnectionBrokerSettings\Serverpurpose -value 3 -ConnectionBroker test -Farmname TEST -CurrentRedirectableaddresses

By using these commands you can script an innstallation of terminal server.

#powershell, #session-host