Microsoft Azure Hybrid deployment of RemoteApp Step by Step @Azure #Microsoft #RemoteApp #MVPBuzz #RDS #HRDAAS

In this blog post I’ll show you how to create a Hybrid RemoteApp Configuration. It is still a Preview and Improvements  could be made.

If you want to run your own applications in Azure like on Citrix or with RDS till now it was not a build in services Microsoft provided.

But with RemoteApp you can easy deploy a default set as below or Create a Hybrid Environment. And there are lots of new options in a Hybrid RDS Azure Site #HRDAAS Hybrid Remote Desktop As a Service


The Quick Create is no fun just hit Create Smile

Now Creating a Hybrid Environment. You will need a syspreped Template with no unattend.xml in it. There For I created a fresh new template clean install with Remote Desktop Session Host installed and most important you need to set a registry key if you don’t do this all will fail!

This is not in the Microsoft Guide !



After everything is Set on the Golden Image we can do a Sysprep. And keep in mind Azure support only VHD files so do not use VHDX files.

C:\Windows\System32\sysprep\sysprep.exe /generalize /oobe /shutdown

now that my golden Image is ready We can upload this image to azure.  ( I used a 50 Gb VHD file ) So If you don’t have a fast Internet connection You need to wait Winking smile a while.


So the next step is Create a RemoteApp With VPN. Pick a name and select create.


A place holder is Created and We will upload the Golden Image To Azure. ( this could take a while so we do this now )

Select the image and pick image Upload

image A popup will Come and a PowerShell script is there for download


Save this on place. Grab also the Command To run

Upload-AzureRemoteAppTemplateImage.ps1 -SAS "?sr=b&si=623fcaf1-63f6-406d-a749-48c2c3f0036b&sig=n%2FHLp5d1wfEgdi68hA%2FaVWOwyhDl35S1eKQ9dKxZdQg%3D" -URI


Running this Script a Browser will open and you can select your Golden Image.  And the Upload will start first some checking

image I was happy with my Fiber internet connection.

Writing a blog and uploading Winking smile


when the upload in done you will see a check and a ready state on the Image.


Next Step is creating a network Is this also my improvement point Whay not using my Site to Site VPN that already is connected to my environment.

Therefor we create a new network that will host the Machines.

Create New network and pick a name.


Fill in the IP networks and use the Internet address of your Router ( Same as S2S VPN )

image  image image

When the Network is created we can download the S2S Script and run this on your Gateway server. I use a Windows 2012R2 RRAS server but there are other options. image

After running the script the Gateway has an extra dail-in option On this gateway I have already a few connections but this is all configurable to your needs.



Now that the network is ready We can start building. When opening the MYMVPAPP with VPN created in the beginning you will see the Status with check marks

Now I have to create a OU and a service account in my domain on-premise


Next step is linking the Golden Image To the App. You can do all this is now with a upload but as we already did the we need only a connection this is a faster and fail save method.

So check the Link an existing Image


You will see your 50Gb uploaded golden Image. This is only available if the Image is correctly uploaded !


We are almost ready, while the provisioning can take up to 30 minutes. Second Improvement point. Show Some Status step 1 from 10 maybe. Now we have to wait.

image  image

Please Note** during several test I change the name but the steps are the same

the next step is assign a user to the image , this must be a default Azure directory User.


image  image

I created a demouser ( I deleted this user after this blog )

We assign this user to the Remote App


Next we assign Applications of the Image I created earlier.  I did not install special apps in this image so it looks a bit basic.


I published all the apps that Azure Scanned for me in my own image. but suppose you have installed office and other apps it will be there in the image.

Next step is login to the RDP session image


image The fun part is I configured MFA ( multi factor Authentication ) Really nice option

When Logged on We see all the Apps I made a Text change in de Word app


However I logged on the session is still inactive


This is still a Preview what I really like is using your own apps in your own domain there are still some issues with the creation of the RemoteApp but if you have configured all this and it is working you can even use this On a Android and or on your Surface how Cool is that.

I installed the latest version of RDP on my android phone I opened a CMD box on my phone totally useless but you can. It works much better on my Surface.

Running Published Apps on my Devices in Azure What will ne next ?


#HRDAAS Hybrid Remote Desktop As a Service

AlwaysOn Failover Cluster Instances SQL Server 2014 in #part2 #azure #winserv #SQL #msteched

As described in the other post AlwaysOn Options the First AlwaysOn option is the FCI version.

AlwaysOn Failover Cluster Instances (SQL Server)

Failover cluster instance (FCI)  is in short the old active/passive configuration – Protection level SQL Server / instance

As part of the SQL Server AlwaysOn offering, AlwaysOn Failover Cluster Instances leverages Windows Server Failover Clustering functionality to provide local high availability through redundancy at the server-instance level—a failover cluster instance (FCI).

An FCI is a single instance of SQL Server that is installed across Windows Server Failover Clustering nodes and, possibly, across multiple subnets. On the network, an FCI appears to be an instance of SQL Server running on a single computer, but the FCI provides failover from one Windows Server Failover Clustering node to another if the current node becomes unavailable.

Building the Basic Cluster

The Basic is a Cluster based on Hyper-v with the shared VHDX option. So starting with a PowerShell script that Creates a Two node Cluster and with a file share witness. You can easily change the PowerShell script and use this in your own environment.  ( Make sure when you grab the script the “ are correct. )

#Install cluster options
Get-WindowsFeature Failover-Clustering
install-WindowsFeature “Failover-Clustering”,”RSAT-Clustering” -IncludeAllSubFeature
#Create cluster validation report
Test-Cluster -Node mvpsql141,mvpsql142
#Create cluster
New-Cluster -Name MVPSQL1401 -Node mvpsql141,mvpsql142 -NoStorage -StaticAddress “″
#Add disks to the cluster
Get-ClusterAvailableDisk -Cluster MVPSQL1401
Get-ClusterAvailableDisk -Cluster MVPSQL1401 |Add-ClusterDisk
#Add disk to CSV
Add-ClusterSharedVolume -Cluster MVPSQL1401 -Name “Cluster Disk 1″
#Set Cluster Quorum
Set-ClusterQuorum -Cluster MVPSQL1401 -FileShareWitness \\mvpdc01\cluster
#set network configuration
(Get-ClusterNetwork “Cluster Network 1”). Role =3

(Get-ClusterNetwork “Cluster Network 2”). Role =1


Remember this is a Lab environment

Now that the Cluster is up and running we can start with the next steps.

AlwaysOn Failover Cluster Instances (SQL Server)

This Cluster will be the basic of all SQL installations. Speaking off SQL Installations I use only 2014 SQL servers and guess what it has new options that I will show you later.

AlwaysOn Failover Cluster Instances (SQL Server)

Well now that the cluster is ready we will deploy SQL 2014 ENT to the cluster, everybody can follow a wizard So we do as usual a Command line install based on ini files. This works the best and the result is always the same. But you can use also VMM or SCCM to do this.

First I use My SQL Ini files, If you don’t have the ini files no problem You can easily create them during the SQL setup. But if you install only one SQL server there is no point of doing this. Only just because you can Winking smile

And If you want to install this by Gui Fine just remember, I always install in advanced mode If one step is failing I can rerun the second step without the long wait of installing the whole server. Setups are always failing at the end.

AlwaysOn Failover Cluster Instances (SQL Server)

When running these steps at the end there is a location where the ini file is stored. copy the ini and put it on a save spot.

In my case I use c:\SQL

There is only one thing that you need to change UIMODE="Normal" you need to turn it off by placing “ ; “ or delete the line we do not do a UI setup

And if you don’t like the interface is showing what the setup is doing then turn this off also. I like to watch so that my boss is thinking I work hard.

; Parameter that controls the user interface behavior. Valid values are Normal for the full UI,AutoAdvance for a simplied UI, and EnableUIOnServerCore for bypassing Server Core setup GUI block.


; Setup will not display any user interface.


When the ini files are in place remember you need 3 ini files

Step 1 : SQL server Advanced Cluster Preparation

Step 2 : SQL server Advanced Cluster Completion

Step 2 : SQL server Join Cluster Node

I mounted the ISO to the Cluster nodes and run this batch file on the first node. As you can see the password is in the file and unencrypted. You can be prompted for this but as this is a how to it is not important right now.

After this is done you will have a One node SQL instance.

AlwaysOn Failover Cluster Instances (SQL Server) 


Add A second node To the SQL FCI

The Second step will be running the step3 script Adding the Second node to the Cluster.

And Again I do this by Command line But Did you know there is an option in the setup UI that you can use INI files during the setup ?

AlwaysOn Failover Cluster Instances (SQL Server)

When using this the setup is not unattended but all the values are used in the ini file. So it is a NEXT NEXT FINISH install this could be handy if you want to change something.

AlwaysOn Failover Cluster Instances (SQL Server) AlwaysOn Failover Cluster Instances (SQL Server) 

Or run the Command line below the join the node to the SQL Instance.


After these steps the SQL AlwaysOn Failover Cluster Instances is ready.


But there are no disks yes that is right in SQL 2014 you can use Cluster shared Volumes (CSV) this is a new feature of SQL server 2014


If you want to see the installation Steps I created a movie with about the same steps. the whole Process creating and install SQL in just 15 Minutes. not fully untended just for showing you what is possible.

Next part will be AlwaysOn Availability Groups (SQL Server) With a connection to Azure

Windows 2012R2 UR1 Cluster Event ID 1223,1069,1077 does not have a valid value for the read-only property ‘ObjectGUID’ #winserv #network

You just created a fresh new cluster based on a PowerShell script and you checked the validation report and read only “Success” great you open the Failover cluster manager and yes there is a cluster

image image

#Install cluster options
Get-WindowsFeature Failover-Clustering
install-WindowsFeature "Failover-Clustering","RSAT-Clustering" -IncludeAllSubFeature
#Create cluster validation report
Test-Cluster -Node mvpsql141,mvpsql142
#Create cluster
New-Cluster -Name MVPSQL1401 -Node mvpsql141,mvpsql142 -NoStorage -StaticAddress ""
#Add disks to the cluster
Get-ClusterAvailableDisk -Cluster MVPSQL1401
Get-ClusterAvailableDisk -Cluster MVPSQL1401 |Add-ClusterDisk
#Add disk to CSV
Add-ClusterSharedVolume -Cluster MVPSQL1401 -Name "Cluster Disk 1"
#Set Cluster Quorum
Set-ClusterQuorum -Cluster MVPSQL1401 -FileShareWitness \\mvpdc01\cluster
#set network configuration
(Get-Cluster Network “Cluster Network 1”). Role =0


But you want to setup some resources but it fails you double check your script and again it failed. you looked at the last error and see an error

“ The network name Name: MVPSQL2014 does not have a valid value for the read-only property ‘ObjectGUID’.”

Followed by several event ID Event ID 1223 1069 1077

You checked the networks



but after open the IP resource you can’t select a network ! but all networks are up !


So what is the problem ?  lets check all the events this must be a but I did everything right

This resource is marked with a state of ‘Failed’ instead of ‘Online’. This failed state indicates that the resource had a problem either coming online or had a failure while it was online

The network name Name: MVPSQL2014 does not have a valid value for the read-only property ‘ObjectGUID’. To validate the service principal name the read-only private property ‘ObjectGuid’ must have a valid value. To correct this issue make sure that the network name has been brought online at least once. If this does not correct this issue you will need to delete the network name and re-create it

Health check for IP interface ‘Cluster IP Address’ (address ’′) failed (status is ’1168′). Run the Validate a Configuration wizard to ensure that the network adapter is functioning properly.

Cluster IP address resource ‘Cluster IP Address’ cannot be brought online because the cluster network ‘Cluster Network 1′ is not configured to allow client access. Please use the Failover Cluster Manager snap-in to check the configured properties of the cluster network.

Event ID 1223 1069 1077

See the last error “ ‘Cluster Network 1′ is not configured to allow client access. “ but I did set this option , yes you did see the script

(Get-Cluster Network “Cluster Network 1”). Role =0


but Role 0 ?

Cluster Network Roles:

Cluster networks are automatically created for all logical subnets connected to all nodes in the Cluster.  Each network adapter card connected to a common subnet will be listed in Failover Cluster Manager.  Cluster networks can be configured for different uses.




Disabled for Cluster Communication


No cluster communication of any kind sent over this network

Enabled for Cluster Communication only


Internal cluster communication and CSV traffic can be sent over this network

Enabled for client and cluster communication


Cluster IP Address resources can be created on this network for clients to connect to. Internal and CSV traffic can be sent over this network


I changed the Role to 3

(Get-Cluster Network “Cluster Network 1”). Role =3

Or in the gui



One happy cluster again as you can see mistakes are easily made and not always detected directly so just make sure your cluster is running healthy before you move further