2nd July I was re-awarded as a Microsoft MVP for 6th consecutive year. Over the years, it has been a great privilege being part of this Microsoft MVP community, to be able to share and also learn from others.

This year, I’m part of the Cloud & Datacenter Management award category due to some of the recent changes in the MVP Program. Previously I was awarded for High Availability award category for my contributions relating to Windows Server / SQL Server High Availability and since OCT 2015, Microsoft made changes to bring Windows Server / System Center award categories together under Cloud & Datacenter Management. This gives us greater flexibility to be able to contribute in other areas such as System Center and also get credited towards the Microsoft MVP Award.

Looking forward to another year within the MVP Program and mostly looking forward to meeting all of my MVP friends and the product team later during the year at the MVP Global Summit, which is held annually at the Microsoft Campus in Redmond.

Microsoft recently updated Azure Server Management tools with a new functionality, which allows remote execution of Windows updates against managed Windows Server / Nano Server instances using Azure Server Management tools. For those who are not familiar Azure Server management tools, I wrote a blog post recently announcing Azure Server Management Tools, which is a new method for managing Windows Server 2016 Servers and also Nano Servers. (https://nirmalt.com/2016/02/26/azure-server-management-toolsinstallation/)

Let’s have a look at the new patch management process using Server Management Tools.

The first step is to go ahead and login to Azure Server Management Tools. And then select a server which needs to be patched using Windows Updates.

You will notice that under settings, we now have a new functionally called “Windows Updates”.


Once you select Windows Update option, you will get two options

  • View available updates
  • View update history

As the name implies, if you select View available updates, it will trigger Windows Update client agent on the Server, and it will show information relating to any missing updates. As you can see from my example below, we can see that there are Updates available.


After selecting Available Updates. You will be able to see all the updates which are applicable for the server and then you can click on Install Updates to install them on the server.


Soon you will see a notification pop-up saying that the updates are being downloaded and installed on the Server.


It should take several minutes, depending on how many updates needs to be downloaded and deployed.


Once we have windows updates successfully installed, we can click on the notification pop-up and get more details


We could also use View update history option to see all the updates which were deployed part of the patch deployment process using Azure Server management tools.


If we trigger Windows Update scan once again, it will show that the device is up to date and doesn’t require any further updates.


More information, please have a look at the blog post below.


Hello Everyone

Quick blog post to walkthrough a script that I used during my Windows Server Technical Preview 5 Lab refresh. I used below script to search through a folder and look for all the virtual machines, and then get them imported in to Hyper-V. Credit should go to Ben who blogged about this few years back but the script was specific for Windows Server 2012 R2 which uses XML for VM configuration. With Server 2016, we have a new binary file format for VM Configuration and this new format uses .VMCX file extension.

I have modified this script from Ben, which can now look for all VMCX files and then import all the VMs in to Hyper-V

Search and Import VMs created using Windows Server 2016 Technical Preview

Get-ChildItem d:\vm -Recurse -Filter "Virtual Machines" | %{Get-ChildItem $_.FullName -Filter *.vmcx} | %{import-vm $_.FullName -Register}

Search and Import VMs created using Windows Server 2012 R2

Get-ChildItem d:\vm -Recurse -Filter "Virtual Machines" | %{Get-ChildItem $_.FullName -Filter *.xml} | %{import-vm $_.FullName -Register}

“D:\VM” is the folder location given to search for Virtual Machine configuration files.



Reference : – https://blogs.msdn.microsoft.com/virtual_pc_guy/2013/08/21/bulk-registering-virtual-machines-with-powershell/

In this blog post let’s looks at creating a Storage Spaces Direct Hyper Converged solution using three virtual machines. For production deployment, it is recommended to use physical servers instead of virtual machines. I will be using Windows Server 2016 Technical Preview 5 version which was just released few days back for this blog post.

Before I move any further, I would like to highlight some of the key features introduced part of Windows Server 2016 Technical Preview 5

– Automatic Configuration

– Storage Spaces Direct Management Using Virtual Machine Manager

– Chassis and Rack Fault Tolerance

– Deployment with 3 Servers

– Deployments with NVMe,SSD and HDD

Overview of Storage Spaces Direct


Storage Spaces Direct enables building highly available and scalable storage systems using local storage. We can utilize storage locally attached to individual nodes such as HDD, SSD and NVMe drives for creating Storage Spaces Direct volumes.

There are two deployment scenarios with Storage Spaces Direct. Hyper-Converged scenarios and disaggregated scenario. In this post, I will be demonstrating Hyper-Converged scenario.

In this blog post let’s look at how we can create, Storage Spaces Direct with 3 Virtual Machines with mirrored resiliency. This deployment is resilient for a single node failure.

Step 01 – Create 3 Virtual Machines with 2 Networks and 3 Hard Drives (1 for OS and the other two for Storage Spaces Direct). Add all 3 Virtual Machines to a domain.



Step 02- is for us to go and install Failover Clustering features and File Services. You can do so by using PowerShell command below.

Install-WindowsFeature –Name File-Services, Failover-Clustering –IncludeManagementTools -ComputerName $VMname

Step 03 – Before go ahead and create the cluster, let’s go ahead and validate our cluster configuration.

Test-Cluster –Node ‘ws164cls1′,’ws164cls2′,’ws164cls3’ –Include “Storage Spaces Direct”,Inventory,Network,”System Configuration”


Validate Test comes back with a failure for Disk Configuration. This is due to Technical Preview 5 not recognizing Virtual Hard Drive storage media type. This will be fixed in the next release, but for now we need to proceed ahead and skip some of the validation for this to work within Technical Preview 5.



Step 04 – Let’s go ahead and create a new cluster without any storage.

New-Cluster –Name ‘ws164cluster1’ –Node ‘ws164cls1′,’ws164cls2′,’ws164cls3’ –NoStorage


Step 05 – I will configure Cloud Witness for this cluster

Set-ClusterQuorum –CloudWitness –AccountName <AccountName> -AccessKey <AccesKey>


Step 06 – Now that we have created a cluster, next option is for us to go ahead and enable Storage Spaces Direct. Please note that we cannot use the commends we used part of Technical Preview 04 since the enable option will fail as it cannot detect required storage disks. This is due to Technical Preview 5 not recognizing Virtual Hard drives and due to this reason we need to skip eligibility checks.

Enable-ClusterS2D -CacheMode Disabled -AutoConfig:0 -SkipEligibilityChecks -Confirm



Step 07 – Once we have enabled Storage Spaces Direct, we need to go ahead and manually create Storage Pool. If we were using Physical Server, we could use auto configuration but this will not work at the moment for Virtual Machines.

New-StoragePool -StorageSubSystemFriendlyName *Cluster* -FriendlyName S2D -ProvisioningTypeDefault Fixed -PhysicalDisk (Get-PhysicalDisk | ? CanPool -eq $true)




Step 08 – Create Storage Tiers

$pool = Get-StoragePool S2D

New-StorageTier -StoragePoolUniqueID ($pool).UniqueID -FriendlyName Performance -MediaType HDD -ResiliencySettingName Mirror

New-StorageTier -StoragePoolUniqueID ($pool).UniqueID -FriendlyName Capacity -MediaType HDD -ResiliencySettingName Parity

Step 09 – Create a Volume

New-Volume -StoragePool $pool -FriendlyName Mirror -FileSystem CSVFS_REFS -StorageTierFriendlyNames ‘Performance’,’Capacity’ -StorageTierSizes 50GB, 200GB




Within Cluster Manager we can now see that we have a new CSV disk available, which can be used by Hyper-V for hosting Virtual Machines.



As mentioned before, if a single node fails, we still have access to storage


Turnoff WS164CLS3



CSV disk is still online and we can see that it has moved in to WS165CLS2. We can still do read/write


However, if we have two node failures, then we will lose access to storage




References for more information

Technet-Storage Spaces Direct in Windows Server 2016 Technical Preview

Technet-Storage Spaces Direct Hardware Requirements

Hyper-converged solution using Storage Spaces Direct in Windows Server 2016

Microsoft has released Technical Preview 5 for Windows Server 2016 and System Center 2016. This release is the last release before moving in to General Availability later this year.  

Microsoft made number of improvements within this Technical Preview 5 for both Windows Server & System Center products. To find out more on what’s improved / add please have a look at below resources

What’s New in Windows Server 2016 Technical Preview 5


What’s New in System Center 2016 Technical Preview 5


Use links below to download Technical Preview 5 

Windows Server 2016 Technical Preview 5


System Center 2016 Technical Preview 5




In my previous post, I provided an Introduction to Azure Server Management Tools. In this blog post we will look at installing & configuration Server Management Tools.

First Step involved in setting up Server Management Tools is for us to create a Server Management Tools Connection. Once a connection has been created, we can go ahead and provision Server Management Tools gateway. Gateway is an essential component which provides Azure Server Management Tools service, connectivity in to your on-premises or azure hosted Server 2016 VMs (At the moment support is only for Windows Server 2016 Technical Preview).


Step 01 – Create Server Management Tools Connection

Login to Azure Portal and click New -> search for Server Management Tools

Create Server Management Tools Connection. Provide a computer name for a VM or Server running with Windows Server Technical Preview. Select your subscription and the local. Next step is for us to create the gateway.


Step 02 – Deploy Server Management Tools Gateway

After creating a Server connection navigate to Server management tools gateways -> click on the gateway and then click setup


Grab the installation link and access your Gateway Server VM. open your browser and then download the gateway deployment package.

Extract the package and then run GatewayService.MSI  (Make sure that you extract the package before running GatewayService.MSI).


Gateway Setup Installation -> Accept License Agreement and click Install


Installation should only take few minutes


Once you have configured navigate to -> Server management tools connections

Initially, there won’t be any data populated. it’s required to provide Management credentials to establish connectivity.


Once you have provided access credentials, we will be able to see performance data populated and also we get access to Server Management Tools.


Microsoft recently released Azure Server Management Tools preview for web-based management tools for Windows Server 2016 Technical Preview running on-premises as well as in Azure.

Currently, Server Management Tools offer the following capabilities:

  • View and change system configuration
  • View performance across various resources and manage processes and services
  • Manage devices attached to the server
  • View event logs
  • View the list of installed roles and features
  • Use a PowerShell console to manage and automate

Having server management tools available in Azure gives me the flexibility to manage my on-premises Windows Server 2016 servers and also Azure Windows Server 2016 Servers using a single portal.

For more information, please visit official blog post from Microsoft



Next post I will talk about how we can install & configure Azure Server Management Tools.