DPM 2016 – replica is inconsistent

If you are getting the “Replica is inconsistent” when backing up VMs on the host Level and have done everything that pops into mind to solve the issue (except for the one I’m going to tell you about now) then read on.

The trick is to first uncheck the Integration Service “Backup (Volume shadow copy)”

Run a backup / consistency check

And the recheck the backup service.

“The difference between backing up with this option on or off is that it controls whether the VSS signal is passed into the VM. When off, this means you’ll be getting a crash consistent backup rather than an application consistent VM backup. An application consistent backup is of course always better since applications and services received a signal to prepare their data structures for live backup. In crash consistent backups, the state is similar to a power off event.”

Kudos to Backupchain for the find!

Read the article here:





Posted in 2016, dpm, howto, hyperv, Server

SCOM 2016 WebConsole pre-reqs

Installing the Web Console for SCOM 2016 requires a lot of features installed.

Install it using PowerShell:

Import-Module ServerManager
Add-WindowsFeature Web-Server, Web-WebServer, Web-Common-Http, Web-Default-Doc, Web-Dir-Browsing, Web-Http-Errors, Web-Static-Content, Web-Health, Web-Http-Logging, Web-Log-Libraries, Web-Request-Monitor, Web-Performance, Web-Stat-Compression, Web-Security, Web-Filtering, Web-Windows-Auth, Web-App-Dev, Web-Net-Ext45, Web-Asp-Net45, Web-ISAPI-Ext, Web-ISAPI-Filter, Web-Mgmt-Tools, Web-Mgmt-Console, Web-Mgmt-Compat, Web-Metabase, NET-Framework-45-Features, NET-Framework-45-Core, NET-Framework-45-ASPNET, NET-WCF-Services45, NET-WCF-HTTP-Activation45, NET-WCF-TCP-PortSharing45, WAS, WAS-Process-Model, WAS-Config-APIs, web-asp-net -restart

The script is to be found on Microsoft TechNet here:


Posted in 2016, howto, SCOM, Server

Adding elements to a list(pshell)

Adding elements to an array using += actually creates a new array with the elements from the original array and adds the new element to it.

A better practice is to create a list instead:

$outItems = New-Object System.Collections.Generic.List[System.Object]

Adding items to the list is done like this:


And if you want to convert the list to an array it’s done like this:



Posted in array, howto, powershell

SPN missing or incorrect for SQL instances

It can be a real pain to get SPN setup correctly for SQL instances, but the tool “Microsoft Kerberos Configuration manager for SQL” really helps out.

Read more about the tool, and download it, from here: https://www.microsoft.com/en-us/download/details.aspx?id=39046

Tagged with: , , ,
Posted in Server, sql

Skype for Business 2015 Prerequisites on Windows Server 2016

Here you go:

Add-WindowsFeature NET-Framework-Core, RSAT-ADDS, Windows-Identity-Foundation, Web-Server, Web-Static-Content, Web-Default-Doc, Web-Http-Errors, Web-Dir-Browsing, Web-Asp-Net, Web-Net-Ext, Web-ISAPI-Ext, Web-ISAPI-Filter, Web-Http-Logging, Web-Log-Libraries, Web-Request-Monitor, Web-Http-Tracing, Web-Basic-Auth, Web-Windows-Auth, Web-Client-Auth, Web-Filtering, Web-Stat-Compression, Web-Dyn-Compression, NET-WCF-HTTP-Activation45, Web-Asp-Net45, Web-Mgmt-Tools, Web-Scripting-Tools, Web-Mgmt-Compat, Server-Media-Foundation, BITS

Posted in 2016, Oneliner, powershell, Server, Skype for business

Measuring disk performance on HyperV VMs

(First of all, sorry for bad formatting..)

Keeping track of how much capacity a virtual disk is taking up is very important for several reasons:

You don’t want to overcommit your CSVs with growing thin provisioning vhdx’s

You don’t want “rogue VMs” to run lose and eat up IOPS from other VMs


Monitoring diskperformance, IOPS, bytes read and written, etc. can be monitored using PowerShell.


You start with enabling monitoring on your VM of choice:

Get-VM -VMName Server01 -ComputerName S2DHost01 | Enable-VMResourceMetering

Now you can get Properties of the VM by using the Measure-VM cmdlet:
Get-VM -VMName Server01 -ComputerName S2DHost01 | Measure-VM | fl
VMId : xxxxxxxxxxxxx
VMName : Server01
CimSession : CimSession: S2DHost01.local
ComputerName : S2DHost01
MeteringDuration :
AverageProcessorUsage : 80
AverageMemoryUsage : 8192
MaximumMemoryUsage : 8192
MinimumMemoryUsage : 8192
TotalDiskAllocation : 131072
AggregatedAverageNormalizedIOPS : 0
AggregatedAverageLatency : 0
AggregatedDiskDataRead : 1
AggregatedDiskDataWritten : 16
AggregatedNormalizedIOCount : 2321
NetworkMeteredTrafficReport : {Microsoft.HyperV.PowerShell.VMNetworkAdapterPortAclMeteringReport, Microsoft.HyperV.PowerShell.VMNetworkAdapterPortAclMeteringReport, Microsoft.HyperV.PowerShell.VMNetworkAdapterPortAclMeteringReport,
HardDiskMetrics : {Microsoft.HyperV.PowerShell.VHDMetrics}
AvgCPU : 80
AvgRAM : 8192
MinRAM : 8192
MaxRAM : 8192
TotalDisk : 131072

Picking just the Properties you are interested in can be done like this:
Get-VM -VMName $vmName -ComputerName $node.name -ErrorAction Stop | Measure-VM | fl vmname, computername, AggregatedAverageNormalizedIOPS, AggregatedAverageLatency, AggregatedDiskDataRead, AggregatedDiskDataWritten, AggregatedNormalizedIOCount

Server01 @ S2DCluster
VMName : Server01
ComputerName : S2DHost01
AggregatedAverageNormalizedIOPS : 0
AggregatedAverageLatency : 0
AggregatedDiskDataRead : 1
AggregatedDiskDataWritten : 16
AggregatedNormalizedIOCount : 2321

If you are balancing load on your VM hosts and you don’t always have complete track on on which host your favourite VM is located, you can use the script here to apply metering and measure the VM regardless of where it is:
$clustername = 'S2DCluster'
$vmName = 'Server01'
$cluster = get-cluster $clustername
$nodes = Get-ClusterNode -Cluster $cluster
foreach($node in $nodes) {
try {
Get-VM -VMName $vmName -ComputerName $node.name -ErrorAction Stop | Enable-VMResourceMetering
Catch {}


$clustername = ‘S2DCluster’
$vmName = ‘Server01’
$cluster = get-cluster $clustername
$nodes = Get-ClusterNode -Cluster $cluster
foreach($node in $nodes) {
try {
$vm = Get-VM -VMName $vmName -ComputerName $node.name -ErrorAction Stop
$vm | Measure-VM
Catch {}


Posted in hyperv, monitoring, performance, virtualization