Select Page

COVID – week 51 – Mar 1 – Mar 7 2021

Weekend – 28M fully vaccinated in the US (two shots),  WA is still slowly, but surely getting vaccines out. Almost a third of the UK have received at least one vaccine dose. “Hundreds of deaths per day” across European countries; sadly that isn’t newsworthy after the brutal waves of the past year. 90M vaccines have been delivered in theUS, including over 2.4M yesterday.

UK numbers from The Guardian. That massive peak, and the climb into it, seems so long ago.


Weekend numbers from The Seattle Times. A year on – they are still doing a daily roundup and regular stats.

Friday – @YearCovid tweeting last years news.

Thursday – last day in the office one year ago. The start of “vaccine passports” and “vaccinated only” events.

Wednesday – a year ago was the week of panic buying and stripped shelves.

Tuesday – amidst positive talk about vaccinations and decreasing positive tests and a decline in deaths; there are still huge risks of a fourth wave.

Monday – a year since the first COVID death in the US and in Washington State. It’s still a race against time – vaccinate and beat the variants. CDC/NIH tracking five variants across the US.

The Guardian The Seattle Times
1 Mar here here
2 Mar here here
3 Mar here here
4 Mar here here
5 Mar here here
6 Mar here here
7 Mar here here

More Kusto – The Everything Script

“The get everything about virtual machines” script.

This brings back pretty much everything – sub second queries. Far, far easier than the old methods using PowerShell.


| where type =~ ‘microsoft.compute/virtualmachines’

| extend nics=array_length(properties.networkProfile.networkInterfaces)

| mv-expand nic=properties.networkProfile.networkInterfaces

| where nics == 1 or =~ ‘true’ or isempty(nic)

| project subscriptionId, resourceGroup, vmId = id, vmName = name, vmSize=tostring(properties.hardwareProfile.vmSize), nicId = tostring(,location, tags.itowner, tags.businessowner, tags.application, tags.costcenter, tags.supportgroup, tags.[‘project’], powerstate=properties.extended.instanceView.powerState.displayStatus, os=properties.storageProfile.osDisk.osType, sku=properties.storageProfile.imageReference.sku

| join kind=leftouter (ResourceContainers | where type==’microsoft.resources/subscriptions’ | project SubName=name, subscriptionId) on subscriptionId

| join kind=leftouter (


  | where type =~ ‘’

  | extend ipConfigsCount=array_length(properties.ipConfigurations)

  | mv-expand ipconfig=properties.ipConfigurations

  | where ipConfigsCount == 1 or =~ ‘true’

  | project nicId = id, privIP = tostring( on nicId

| project-away subscriptionId, subscriptionId1, vmId, nicId, nicId1

COVID – week 50 – Feb 22 – Feb 28 2021

Saturday – huge demand for vaccinations; this story from Portland, OR describing how 400,000 attempts to book for 3,400 slots. Washington State at around 13% first vaccination, UK is at just under 30% of the population having at least one dose. That reaches almost 40% in Wales. That’s actually quite the testament to the role of the NHS.

Track and Trace (contact tracing) is partially working, depending on location. Great results in New Zealand, missed contacts in England (with a possible Brazil variant escaped into the wild), unknown results in the US.


Usual weekend state of the State from The Seattle Times. Positive test rate is steady at around 5.4% – still a good way to go to below 2% trend.

Friday – next week I will start the “one year ago” retrospectives. The first cases of COVID in the US were in Washington State, first identified in late January. The first death was 29 February.

Thursday – reluctance over taking the AstraZeneca vaccine.

Wednesday – J&J single shot vaccine approved

Tuesday – >112M global cases, >2.5M global deaths.

Monday – officially 500,000 deaths due to Covid in the US.

The Guardian The Seattle Times
22 Feb here here
23 Feb here here
24 Feb here here
25 Feb here here
26 Feb here here
27 Feb here here
28 Feb here here

Hands off keyboards! Automation and metadata validation


Tag taxonomy cleanup.

Another great example of “hands off keyboards” and needing to deliver via automation. Avoid errors, enforce validation of metadata.


Azure Resource Graph explorer – find the scope and scale of the problem. I’ll add the usual gripe around tags being case sensitive in some places (API, PowerShell) and not in others (Azure Portal!).


| where tags.businesowner != ”

| project name, subscriptionId, resourceGroup, tags.businessowner, tags.businesowner

COVID – week 49 – Feb 15 – Feb 21 2021

Weekend – half a million dead in the US.

Usual weekly update from The Seattle Times. Positive rates are down, folk are becoming complacent again. Continued discussion on back to school.

Friday – another variant in Japan, it’s a race. Dr Fauci says “back to normal by Christmas”.

Thursday – AstraZeneca vaccine reluctance. Rich/Poor divide on vaccine distribution.

Wednesday – Washington State daily cases below 600 for the first time in many months. Daily positive tests down to 6.5%. 10.7% of population have had first vaccine shot. Vaccine production is now the bottleneck. It’s a race against variants/mutations.

Tuesday – more mutations, one of these could be the escapee and massive impact. Real concern that antibiotic use during COVID is accelerating the risk of AMR.

Monday – we’re going to see a lot of “this time last year” posts in the media. Between late January 2020 and late February there was news coverage about the first case in the US – and increasing concern in China and across SE Asia about spread. My post from mid-March 2020 describing this time. Still in the office at that point.

The Guardian The Seattle Times
15 Feb here here
16 Feb here here
17 Feb here here
18 Feb here here
19 Feb here here
20 Feb here here
21 Feb here here

COVID – week 48 – Feb 8 – Feb 14 2021

Weekend – cases declining in Washington State, positive rate is relatively stable at just under 8%.

US Daily reported cases below 100k/day for the first time since the end of October 2020. Data from JHU.


Weekend numbers from The Seattle Times.

Friday – UK hits 21% of population with at least one vaccine shot.


Thursday – WHO continue to search for the origin of this coronavirus. 600M vaccines by July for US. Population should be vaccinated by summer.

Wednesday – as vaccines continue to be rolled out, counties, countries are starting to open back up.

Tuesday – “Wuhan lab leak” unlikely to be source of coronavirus. Continued border closures as governments try to extinguish spread.

Monday – UK variant of COVID-19 is rapidly spreading in the US. Slowly vaccines are getting delivered.

TheGuardian The Seattle Times
8 Feb here here
9 Feb here here
10 Feb here here
11 Feb here here
12 Feb here here
13 Feb here here
14 Feb here here

More Kusto – Azure Backup reporting

Using KQL against Azure Resource Graph; and here’s another useful snippet – it’s faster by far than PowerShell, subsecond result set.


| join kind=leftouter (ResourceContainers | where type==’microsoft.resources/subscriptions’ | project SubName=name, subscriptionId) on subscriptionId

| where type == “microsoft.recoveryservices/vaults/backupjobs”

| where properties.backupManagementType == “AzureIaasVM”

| extend rsg = replace(“;[[:graph:]]*”, “”, replace(“iaasvmcontainerv2;”,””,tostring(properties.containerName)))

| extend vmname = tolower(tostring(properties.entityFriendlyName))

| extend rsvault = tolower(replace(“/[[:graph:]]*”,””, replace(“[[:graph:]]*\\/vaults\\/”,””,id)))

| extend backupage = datetime_diff(‘day’, now(), todatetime(properties.endTime))

| project SubName, rsg, vmname, rsvault, properties.operationCategory, properties.status, backupage

Cleaning up Azure storage – an ongoing tale

Back to “Azure Grim Reaper” – flagging and deleting unused storage in Azure.

There is no “nice” way to do this – the Azure Metrics help a lot.

Here’s some code that enumerates a list of subscriptions and pulls out storage accounts, transactions over a period of time, count of storage containers, tables and queues – and reads tags.

It’s generic enough for use in most places.

# setup
#import-module az
# creds
# set up array of subs

$subs= ‘<subscription ID>’, ‘<subscription ID>’

# today
$nowdate = Get-Date

#initialise output

$stgdata =@()

Write-Host “Enumerating” $subs.count “subscription(s)”

# loop through the subscription(s)

foreach ($subscription in $subs) {
# in subscription, next read the storage accounts
#set context
write-host “Switching to subscription” $subscription
set-azcontext -subscription $subscription |out-null
write-host “enumerating storage accounts”
$stgacclist = get-azstorageaccount
write-host “Total of” $stgacclist.count “storage accounts in subscription” $subscription

# loop through each storage account

foreach ($stgacc in $stgacclist) {
# in storage account, get all storage containers, tables and queues
# stgacc entity has StorageAccountNme and ResourceGroupName and tags

set-azcurrentstorageaccount -Name $stgacc.StorageAccountName -ResourceGroupName $stgacc.ResourceGroupName

write-host “enumerating storage account ” $stgacc.StorageAccountName ” in resource group” $stgacc.ResourceGroupName
write-host “storage containers”
$stgcontainers = get-azstoragecontainer
write-host “table service”
$tblservice = get-azstoragetable
write-host “queue service”
$qservice = get-azstoragequeue

#get transactions

$transactions = Get-AzMetric -ResourceId $ -TimeGrain 0.1:00:00 -starttime ((get-date).AddDays(-60)) -endtime (get-date) -MetricNames “Transactions” -WarningAction SilentlyContinue
write-host “60 days of transactions” $(($transactions.Data | Measure-Object -Property total -Sum).sum)

#reset usage array
$lastused = @()

#loop through each blob service container
foreach ($container in $stgcontainers) {
# in blob storage container
write-host “collecting blob storage data”

$lastused += [PSCustomObject]@{
Subscription = $subscription
ResourceGroup = $stgacc.ResourceGroupName
StorageAccount = $stgacc.StorageAccountName
StorageContainer = $
LastModified = $container.lastmodified.Date
Age = ($nowdate – $container.LastModified.Date).Days


#let’s find any unmanaged disks in the container
$allblobs = get-azstorageblob -container $
$vhdblobs = $allblobs | Where-Object {$_.BlobType -eq ‘PageBlob’ -and $_.Name.EndsWith(‘.vhd’)}


write-host “Total of ” $stgcontainers.count “containers. Minimum age ” ($lastused.Age |Measure -Minimum).minimum “maximum age” ($lastused.Age |Measure -Maximum).maximum

#append to the array

$stgdata += [PSCustomObject]@{
Subscription = $subscription
ResourceGroup = $stgacc.ResourceGroupName
StorageAccount = $stgacc.StorageAccountName
Transactions = $(($transactions.Data | Measure-Object -Property total -Sum).sum)
ContainerCount = $stgcontainers.Count
TableCount = $tblservice.Count
QueueCount = $qservice.Count
AgingMin = ($lastused.Age |Measure -Minimum).minimum
AgingMax = ($lastused.Age |Measure -Maximum).maximum
vhd = $vhdblobs.count
blobs = $allblobs.count

#tag metadata
itowner = $stgacc.tags.itowner
businessowner = $stgacc.tags.businessowner
application =$stgacc.tags.application
costcenter = $stgacc.tags.costcenter

#output to csv

$stgdata | export-csv <somelocation>\storageacc.csv -force -NoTypeInformation

COVID – week 47 – Feb 1 – Feb 7 2021

Weekend – much concern that the Oxford/AstraZeneca vaccine does not provide adequate protection against the “South Africa” variant. Variant breakout is a real challenge. Lockdown, vaccination are really having an effect on the UK rates. (Below, from The Guardian).


Hotspots of South Africa variant in the UK.

Weekend update for Washington State from The Seattle Times. Positive case rate is stable and is certainly trending downwards. Vaccine delivery is slow but picking up; almost 9% have first vaccine shot (compare to 18% in the UK).

Friday – UK variant now 6%+ of COVID cases; this is the more transmissible version.

Thursday – Good data from The Seattle Times on vaccine rates across the state, by race and ethnicity. (paywall) “Scarce doses of the COVID-19 vaccine have so far gone disproportionately to white Washington residents, new data from the state Department of Health (DOH) shows.”

Wednesday – Oxford/AstraZeneca vaccine being limited in multiple locations to 18-55; leaving limited choices for over 55, more at risk community.

Tuesday – another “worrying mutation” in the UK. This may be the pattern for the next year – as vaccinations roll out and some immunity builds; watching for mutations that escape.

Monday – travel bans, closed borders contrasted with re-opening and relaxed restrictions. Parts of Washington State move to “phase 2” – which means restaurants can start to re-open at 25% capacity.

The Guardian The Seattle Times
1 Feb here here
2 Feb here here
3 Feb here here
4 Feb here here
5 Feb here here
6 Feb here here
7 Feb here here

COVID – week 46 – Jan 25 – Jan 31 2021

Weekend – more discussion about how the US is somewhat blind to the new mutations and spread.

Weekly look at Washington State from The Seattle Times

Friday – more stories of vaccine restrictions and low numbers of delivery.

Thursday – EU/UK/NI spat over restrictions on vaccine deliveries.

Wednesday – more spread of the South Africa and Kent mutations; borders being closed; travel being stopped.

Tuesday – vaccine production lagging. Demand exceeds capacity.

Monday – Looking back at a year of COVID. First US cases in late January 2020. Watched the documentary 76 Days over the weekend. Today: 100M global cases, vaccines being delivered, wearing a mask is political.

The Guardian The Seattle Times
25 Jan here here
26 Jan here here
27 Jan here here
28 Jan here here
29 Jan here here
30 Jan here here
31 Jan here here