Upgrading the omsagent on Linux

We have really good license coverage in the Innovations Team that I am part of and recently we had Microsoft 365 Defender reporting high exposure on two linux servers. In our case these were two syslog forwarders that we use to give Sentinel visibility of our FortiGate virtual appliances. We use the latter to offer services to IaaS workloads hosted in Azure.

Looking at the device specific recommendations it told us “Update Microsoft omsagent for Linux”. My immediate reaction was to log on to each server and run the only command I know:

sudo yum update

This was fine on one server, the other had run out of space. To cut a long story short, I found that a couple of Azure VM Extensions had failed to install and in complaint were filling the boot disk with logs. I removed the offending extensions and this got space back.

Unfortunately the update made no difference. I’ll clarify what my goal was here; to get the security recommendation in Microsoft 365 Defender to go away. This is a process that can take some days depending on the update cycle between the enrolled Linux Machine and the process that generates the security recommendations. Short story – updating the server did not remove the recommendation to Update Microsoft omsagent for Linux.

So I went hunting for more specific instructions and found information on the Log Analytics agent (aha, so that is what omsagent is!) documentation page on upgrading the Linux agent. This directed me to run the following command (per documentation on 29th March 2022):

sudo sh ./omsagent-*.universal.x64.sh --upgrade

I tried this on both servers, in one case it could not find the script, in the other it appeared to run fine but exited with status 0 (I didn’t know if this was good or bad). It turned out that the script location was different on the two servers and I found the script in a different place. It ran in a similar fashion with a big long list out output and status 0 (still none the wiser).

I checked in again and Microsoft 365 Defender still recommended that we Update Microsoft omsagent for Linux.

So I had a think, and got rid of some of my Linux related caution (I’m not a confident Linux admin) and found myself at the home / source of the agent in GitHub. By this time I had a few tabs open in Edge and I did some command modification to get some context. I ran the following:

rpm -qa | grep omsagent

And the output of this suggested returned omsagent-1.13.35-0.x86_64 which I took to mean I was looking at a server with v1.13.35 whereas at the time of writing, GitHub had a latest release of v1.14.9 . So running the command above had not upgraded to the latest version. So I had assumed incorrectly, my hypothesis then became that I need to run the latest version in upgrade mode, rather than that an older version would automatically update itself to the latest.

So working through the readme on the omsagent for Linux GitHub page I copied the URL for the latest OMS Agent for Linux (64-bit) and ran this with the wget command to download the script i.e.

wget https://github.com/microsoft/OMS-Agent-for-Linux/releases/download/OMSAgent_v1.14.9-0/omsagent-1.14.9-0.universal.x64.sh

Then I ran the new version that I had just downloaded with the upgrade switch thus:

sudo sh omsagent-1.14.9-0.universal.x64.sh --upgrade

This produced an even longer output with lots of messages. When I checked Microsoft 365 Defender that recommendation had been removed for the two syslog servers in question. Job Done!

Epilogue

What I also found out is that the upgrade scenarios for the Log Analytics Agent are interesting and there is interaction with extensions etc. Azure Virtual Machine Extensions also have a short list of very specific events that trigger an upgrade (if the setting is available and set) and that this list is quite small and fairly rare (e.g. sku changes). The choices now available for vulnerability scanning get better each day, in my case following through on those recommendations for Linux can be tricky!

My 7 days with an ID.3 from a charging perspective

I’ve just finished a 7 day hire of a Volkswagen ID.3 which I did because I’m used to Volkswagens and to see if I could live with an ID.3 as my car. Quick answer is yes, but part of the long answer is in this post which is about my experience with charging.

Firstly, as mentioned in my introduction post, the ID.3 was provided with a Type 2 charging cable which allowed the car to charge at it’s full rate of 11kW (according to the app for the car) and this was very useful.

Secondly I spent a lot of time on Zap Map and other charging apps to consider my options for charging and the week before the hire I installed the following charging apps on my phone:

  • A Better Route Planner – this was to give me a rough idea “on the road” as to how much I needed to charge to for a particular journey leg.
  • Instavolt – their chargers have a good reputation and they have particularly good coverage around Durham where I picked up the car.
  • BP Pulse – have a large hub at Harthill Services which are near to my home, and also at Stephen’s Bakers which was going to be a stop in one of my day trips.
  • IONITY – as a high profile organisation in the European VW EV picture I wanted to try one of their chargers, so included it on our trip home from Durham.
  • Fastned – have a growing presence in the North East of England and were a plan B for our trip home.
  • Mer Connect – the hotel we stayed in in Durham was next door to a public car park which had two of their chargers.
  • GeniePointMobile – the hotel we stayed in in Durham had one of their chargers in it’s car park.

I already had the following apps installed on my phone:

  • ChargePlace Scotland – the new app created by the new operator of ChargePlace Scotland is a big improvement over what was available previously. I already had an RFID card from them from hiring the Tesla Model S two years ago and have used it since. I check in from time to time to look at the utilisation of the two 50kW chargers that are within a 2 mile radius of where I live.
  • Osprey Charging – there are a few locations with 50kW chargers across the central belt of Scotland and I already had this installed.
  • ChargePoint – I had this installed to see if it would be more convenient as an aggregator of Charge Point operators but it wasn’t!
  • Shell Recharge – I have this installed as I use Shell a lot for filling up my ICE Golf and got a special offer for discounted charging just before the hire. Unfortunately coverage isn’t great and I haven’t used it.
  • PodPoint – I had this installed from our previous road trip.

Research

Charge Point research consists of a mix of the following sources:

  • Zap Map has the best general coverage of charge points with some conspicuous gaps (ChargePlace Scotland for instance) and a curious reliance on user reviews. I have a mild distrust of online reviews so regard them as an opinion to be noted but subject to verification.
  • Google Maps have ev chargers included but their location accuracy can be patchy, but I can only see this improving as manufacturers such as Polestar and Volvo use their data in their cars.
  • ChargePlace Scotland is much better than it was and the charger status is really useful.

Day 1 – Mer Connect

We normally stay at the Hotel Bannatyne in Durham as use of the Health Club facilities is included and they happen to have an Instavolt Charger. Unfortunately I had a problem booking through their website and didn’t get a reply to my email querying the issue which raised alarm bells.

So I chose the Radisson Blu for the first time; more expensive than Bannatyne’s and you have to pay for parking but within walking distance of Durham Centre.

My research indicated that the hotel car park had a GeniePoint charger but fairly high parking charges, but also that the local public car park had 4 charge points on two chargers and lower parking rates with free overnight parking.

That I had parking options that both had charging was a good start, in the end I steered clear of the hotel parking as I didn’t like that the only content on the parking company’s website for drivers was to appeal parking tickets – no maps or information on rates.

I used Sidegate car park during our stay and simply paid slightly over what I needed to allow us to take our time. The ticket machines accommodated contactless payment and the display and ticket included the departure time. This worked with the overnight timing so I could prepay the night before to 12:30 for instance (Hotel Check out time being 12:00). There was plenty of space when we needed it and the four charging bays are clearly marked at the front of the car park. Although there were roadworks on the access to the car park which made pedestrian access interesting it wasn’t a problem for us.

I used the Mer chargers twice, once in the morning to try the process of charging the ID.3 for the first time and again in the evening once we returned from York to top the car up to 50% to get us to the Ionity at Alwnick on the way home (calculated using a better route planner – technically 40% but the minimum set charge level on the ID.3 is 50%).

Practice Charge in Sidegate Car Park

We had a day trip to York on the Saturday and I planned a stop at Wolviston Services as there is an Instavolt charger at Dominos there. As it turned out the car didn’t need a charge and I just used the stop for a McDonald’s breakfast. What was exciting was the large number of chargers being commissioned by MFG – their distinctive light blue branding was visible from a distance and there was what appeared to be a good number of chargers being added to the service station.

Although we used the Rawcliffe Bar park and ride, it appeared that the single charger onsite was having issues (based on a check of zap-map) and the big plans that York council had had been slightly derailed by the pandemic. I hope things manage to catch up as the plans looked good. My earlier research indicated a nearby Instavolt but we didn’t need it.

As mentioned above we drove from Durham to York and back and I plugged back in with the Type 2 cable at the Sidegate car park with the ID.3 set to 50%. The charging history from Mer indicates that the charge to 50% took an hour and a quarter, cost £4.71 and added 14.280 kWh. The app told me that it was charging at 11kW and I went back to the car to repark it and free up the charger.

Sidegate Car Park (Durham) from the Radisson Blu

Day 2 Instavolt and Wallyford Park and Ride (ChargePlace Scotland)

After a couple of nights in Durham with a day trip to York on the Saturday, we checked out and started our journey home to Livingston. I used the We Charge app in the ID.3 user interface to find the Ionity charger at Alwnick and set the navigation to take us there.

Although Ionity is one of the most expensive options without a plan, I wanted to try one to see what it was like.

The ID.3 started giving charge warnings at 40 miles range when we were about 5 miles from Alwnick – we were the only EV when we got there. We arrived with 17% state of charge (we had everything switched on from A/C to heated seats at times!) and the combination of Ionity and relatively low state of charge with UK Spring temperatures saw a peak of 72kW which was the highest I saw all week.

Charging session at Ionity on CCS

When we were there a family parked up in their van and left it charging while they went to McDonalds – we stayed in the car for the charging session of 23min. This delivered 24.35kWh at a cost of £16.80

ID.3 charging at Ionity Alwnick

I then set the navigation to take us to our first ChargePlace Scotland Charger of the week at Wallyford Park & Ride. I think Wallyford is the only location with chargers over 100kW “Ultra Rapid” on the ChargePlace network and wanted to have a shot on the way home.

There was a volvo C40 Recharge on one of the chargers when we got there and we used the other charger (number 52462). This was the only charger all week that I had a real problem with – to begin with my RFID card didn’t work and then when using the app I had an issue starting the charging session. Having watched a couple of YouTube videos I held on to the CCS connector during handshake (flashing white light on the ID.3) and was able to get the charge session started. I later emailed the support team about my RFID card and they said that something on my account was wrong and that they had fixed it.

My session at Wallyford took 33 minutes and cost me £8.83 for 29.45kWh.

Wallyford Park & Ride Ultra Rapid Charger

Once home near Livingston I decided to try one of our local chargers at Calderwood Primary school (Chargeplace Charger 54003); this has recently had new chargers installed and once I got the hang of the charge limit setting in the ID.3 and reset this to 80% (inadvertently finishing the charging session early). Charging to 80% on the CCS connector took 15.42 minutes and delivered 9.12 kWh and cost me nothing (one current bonus of living in West Lothian).

First CCS Charging session in West Lothian at Calderwood Primary School
Rapid Charger at Calderwood Primary School

Day 3 ChargePlace Scotland for Child Sitting in West Lothian

On Day 3 we had a rest and picked up our Granddaughter from School in the afternoon. We popped to the charger for a top up and to show my Granddaughter about EV Charging then went to the park. Another 15 minute stop to get back up to 80%

Day 4 Chargeplace Scotland and BP Pulse for Loch Lomond

On Day 4 (Tuesday) we had a day trip to Loch Lomond. I planned a visit to Loch Lomond Shores with a little trepidation as Zap Map said the destination chargers were 50/50. When we got there two cars were charging (A Renault Zoe and a Tesla Model X) and I slotted in between the two and plugged the ID.3 in with no problems. As it turned out the nice day meant we spent quite a time there and I increased the charging percentage above 80% so the car would continue charging. The car charged for 2:17:25 hours and received 26.07 kWh and again was free.

Loch Lomond Shores, Balloch

We popped over to see the Hill House in Helensburgh after visiting Loch Lomond Shores and headed back to Livingston. Again I wanted to try the “Ultra Rapid” BP pulse chargers at Harthill Services on the M8 and this coincided well with a toilet and provisions stop. Most of the chargers in Scotland are 50kW and I wanted to try out a faster charger. I used the app and was a little confused with a negative balance at the end of the charge session but just added another £5 to my balance. Charging to 80% took 21:18 minutes, delivering 12.552 kWh at a cost of £5.53.

BP Pulse Charging Session
BP Pulse at Harthill Services (North) on M8 Motorway
BP Pulse Charging Session at Harthill Services

Day 5 BP Pulse and Chargeplace Scotland in Fife, Podpoint in Broxburn

For day 5 (Wednesday) we had a day trip to Fife to explore along the coastline starting in Kirkcaldy. There just happens to be a BP Pulse charger at Stephen’s Bakery at the top of Kirkcaldy and it was clear when we arrived.

Charging at BP Pulse, Stephens Bakery, Roslyn Street Kirkcaldy

This was another perfect stop – I put the ID.3 on charge, then went in to buy a few things including two coffees with a bacon roll for me and a macaroni pie for MrsL. This charge stop took 25:44 minutes to put in 14.7kW and cost £5.59.

We then made the first of several visits along the coastline of Fife; there are occasional charging locations but the rapid chargers only go as far as Kirkcaldy and Glenrothes. That said I was delighted to find two chargers in coastal car parks that were obviously new but not yet connected, which was nice to see.

We visited Dysart Harbour and spotted a new charger that had been installed and not connected. The weather was really windy and we didn’t venture farther than the public toilets at The Harbourmasters House. We then went farther along the coast and stopped at West Wemyss, Buckhaven, Leven, Lundin Links and Lower Largo (another toilet stop!). Again I was delighted to see a new charger had been installed at the back of Lower Largo (Temple) but not yet switched on.

We travelled farther along to Elie where we bought lunch at the bakers and headed to our next charging stop at St Monans Car Park where we plugged in (Chargeplace 54233) and eat our lunch and used the toilets. Again combining activities made the time pass better and we were charging for 40:45 minutes to get 7.74 kW and it cost us £2.76.

Chargeplace Scotland charger at The Common Car Park, St Monans

We then headed along the coast to Anstruther. I didn’t plug in to the charger as there was a Renault Zoe already charging and parked in the right hand space, making the parking manoeuvre a little more advanced than I wanted to try and our state of charge was quite high. So we managed to get as far as Anstruther Fish Bar and had a second lunch!

We then made our last visit on the coast in Crail and I plugged in to the Chargeplace Scotland charger in Marketgate. Crail was fairly quiet and it was easier to spot and park beside as a result as Google streetview did not show the charger (research!) – it’s at the end nearest the mini roundabout. All of the parking spaces are slightly tricky as they are at an angle but I was able to get back up to 80% while I walked the length of Crail trying to find a public toilet (I failed) so went for plan B and bought a coffee to use the toilet at lovely The Beehive Crail. The charging session (Chargeplace Charger 53017) was 22:48 minutes to deliver 2.48 kWh and cost £1.97.

Marketgate Crail

With the drive back from Crail to Livingston being 50 odd miles I headed out to try and get topped up but the local Chargeplace Scotland chargers were in use. I checked my apps and decided to go to the PodPoint charger at Lidl in Broxburn which was the cheapest paid for charger in the area. I set things in motion and did some extra shopping. The session took 31 minutes to receive 21.44kWh and cost £5.57.

44 kW at Podpoint Lidl Broxburn
Waiting at Lidl Broxburn after shopping for the ID.3 to reach 80% on the Podpoint

Day 6 Child Sitting in West Lothian with Osprey and Chargeplace Scotland

Day 6 (Thursday) was a day I helped my wife pick up our Granddaughter so after a slow start we picked her up and we went to the local Starbucks Drive Thru in Livingston as this is next door to a Marston’s that has an Osprey 50kW charger. Having driven through I connected up and we all had our coffee / cookies / refreshments etc. Again no picture but the session took 14:07 minutes to receive 5.72kWh and cost £2.29.

As we were due to return the car to Pulman in Durham the next day I popped out to top up the ID.3 to 90% to get us all the way from Livingston to Durham if we needed it. Adding 7.42kWh took 21:29 minutes at Calderwood Primary School.

While charging a local resident came up to ask me about charging – his brother was due to visit from the Netherlands on the way to Harris and had just got an electric car after his previous car was flattened by a falling tree. I talked (too much as usual) about Chargeplace Scotland.

Day 7 Chargeplace Scotland heading back to Durham

Day 7 (Friday) and we had an earlyish start to give us plenty of time to drive to Durham and return the car and get to the station for our train back to Edinburgh.

Starting with 90% meant we could get to Pulman Volkswagen without charging if we went cross country down the A68 instead of the quicker but longer coastal route down the A1. I tweaked this slightly and we first went to Galashiels so I could get breakfast, then we travelled on to Jedburgh for a comfort break but also for a charging stop (we had stopped here with the Tesla Model S two years previously so I wanted to repeat with our next road trip).

When we arrived at the Cannongate car park a Nissan Leaf was charging and when I checked there was a sign on the charger confirming that it was only possible to use one of the three connectors at a time to charge. So we left it and used the toilets at the Tourist Centre. When we returned the Nissan Leaf driver was leaving so I took the opportunity to park badly (a theme with me) and put the ID.3 on charge, I quite liked the idea that we were on our second road trip 2 years after the Tesla Model S and using the same charger again that had been the first Chargeplace Scotland charger (Cannongate Car Park number 51508) I had used my RFID card on. It took me a couple of goes to charge as the first time we cancelled the charge by mistake by sliding the percentage bar in the wrong direction on the ID.3 touch screen. This session cost nothing to add 13 kWh in 25 minutes.

And we travelled onwards to return the ID.3 to Pulman Volkswagen in Durham and then return home via public transport (Two buses and First class LNER!).

I’m just back from hiring a Volkswagen ID.3 for 7 days

I just returned our hire ID.3 to Pulman Volkswagen in Durham after 7 days of a mixed road trip and week off. I’m a long time Volkswagen driver having started with a diesel Passat and then a few VW Golfs when our kids grew up and we didn’t need as large a car.

I currently drive a VW Golf Mk7.5 and although I’ve sat in the ID.3 and ID.4 in our local VW Dealer showroom, really wanted to have a drive. When I saw the awesome hire rates from VW Financial Services Rent-A-Car I got in touch with the nearest VW Finance Car Hire centre with the ID.3 and booked it for 7 days. This was still cheaper than the weekend rate on the Tesla Model S of a few years ago; apparently the rates are set centrally by VW Finance Rental in an attempt to encourage purchase.

We hired the ID.3 Family but unfortunately this had a technical fault on the day we were due to pick up the car so fortunately I was still able to get a 204PS ID.3 for the week but in a lower trim (Life).

The Volkswagen ID.3 Life Edition we collected from Pulman Volkswagen in Durham.

I’m going to write some more detailed posts as I gather my thoughts but in summary it was a seamless hire experience:

  • Big thanks to Shahkiel Akbar (Group rental manager) for a smooth and efficient hire process, and for his first hand experience of running an ID.3 as his daily drive.
  • Thanks for handing the car over with 100% charge (you can see the bank of chargers Pulman have in their forecourt) and for explaining that the car didn’t need to be charged before return.
  • Thanks again for including a Type 2 cable with the car (Enterprise omitted this with the Tesla Model S) and I consistently saw 11kW when using AC chargers.
  • I was able to use the VW ID app on my Android Phone which allowed me to monitor the charge status of the car when AC charging.
  • The car was Manganese Grey Metallic which is the colour I always pick when playing with the car configurator on the Volkswagen Website.

In summary the car was very good and felt like our car after a few days, I found a good driving position immediately and it just worked as a car.

Migrate manually from Azure Virtual Desktop (classic)

I recently went through the process of migrating our pilot Windows Virtual Desktop (WVD) environment from classic to ARM Azure Virtual Desktop. The manual instructions are straightforward, especially if you’ve ever had to reallocate a personal session host to someone else. The process of reallocation is very similar to migration, just that instead of re-registering the session host with the same host pool you re-register the session host with the “new” host pool.

The main reason for migration was cost; our pilot environment while handy is also under-utilised and I really wanted to get the utility of start on demand as I thought this was a good fit for our usage model. We already have a stop – start schedule using runbooks (yes – old style again) for cost management reasons and my plan was to switch automation to a stop only, so that a session host would start when requested and then shut off after business hours.

The instructions for migration are at Migrate manually from Azure Virtual Desktop (classic) – Azure | Microsoft Docs which is rather good like most of the platform documentation these days. I checked with our team and a colleague volunteered his session host for the initial test and I grabbed my existing ARM templates that create the Workspace, Application group and Host pool with the naming that I like to use.

Note that the migration process (like session host reallocation) relies on you having access to the session host as an admin; there isn’t built in tooling to get remote access to a session host as part of Azure Virtual Desktop so you’ll need credentials and ports open (if you’ve been good and kept inbound 3389 closed).

My first hiccough was finding the “Registration Key” for the host pool; for new deployments I use PowerShell and pass it straight. In the Azure Portal the Registration Key link is innocuously hidden at the top of the Host pool page next to Refresh and Delete in one of the shortest toolbars going.

The rest was smooth enough, my other tip is that you somehow need to gather the two download URLs and the registration key in a form you can get to the session host. As cut and paste is restricted in our environment I store the info in OneDrive for Business in our tenant and use the web to login and retrieve the information.

The next thing to stall me was installation of the Azure Virtual Desktop Agent. When I went to install the .msi I got the error “Remote Desktop Services Infrastructure Agent Setup Wizard ended prematurely because of an error. Your system has not been modified. To install this program at a later time, run Setup Wizard again. Click the Finish button to exit the Setup Wizard.”

It took me a while to remember this issue; on this session host I needed to uninstall the multiple installations of the following applications:

  • Remote Desktop Services SxS Network Stack
  • Remote Desktop Services Infrastructure Agent
  • Remote Desktop Services Infrastructure Geneva Agent NN.N.N

In my case I had four of each to remove. Note that the first will give warnings about running applications; I’d advise you not to stop these and queue for a reboot, otherwise you will lose your RDP connection and I had to restart in order to be able to access the session host VM again.

Fourth, Fifth and Sixth EV Drive through car clubs

I have a rather strange “tradition” of hiring cars and doing a road trip or similar. Years and years ago I hired a Peugeot for a couple of days and did most of what the youngsters call the “NC500” in a day.

Then a few years ago I hired a big Volvo Automatic and took the family to Oban.

As my personal cars have got better and I’ve had the motorbike I’ve hired less cars. This may also be due to a more or less 3 year stint working in Reading and Berkshire where I had a hire car for work every day and this was an excellent opportunity to drive a few different cars. During that time I started driving automatic cars as this was a lot easier in my VW Golf with my dodgy left knee.

Latterly I’ve been interested in driving Electric Vehicles, but as an early adoption item these are rather few and far between in hire fleets. Enterprise had a good number of Tesla Model S for a few years but it would appear that the pandemic has seen these reduce.

In the last few months I’ve discovered a couple of Car Clubs which are there to discourage personal car ownership and provide a convenient way of hiring a vehicle for a short time. It so happens that Enterprise Car Club operate locally, and off the back of a planned visit to Dundee I also discovered Co Wheels. Now I’ll admit that I’m probably farther down the route of considering an EV as my main mode of transport rather than giving up personal transportation (yes – I’m really bad with two personal vehicles) so I’m a little embarassed that I didn’t give up my VW Golf and BMW GS Adventure before hiring those cars but hopefully get a few points for starting the journey (if you forgive the pun).

So in order, here’s some more EVs that I’ve had the experience of driving.

Fourth EV Drive – Nissan Leaf – Enterprise Car Club

After the Tesla Model S hire with Enterprise, I discovered that Enterprise Car Club in Edinburgh have a number of Nissan Leafs at locations, and ultimately decided to take a short hire of a car in Fife to see how I got on with the car.

There was a gap of a couple of months between sign up (which involved license stuff etc) and hire. The actual hire process was very slick through the app on Android. I rocked up to the car, booked the car through the app and the car opened up for me.

With EVs both car clubs operate in the same way, they are given allocated parking spaces with EV Charging (much to the consternation of other EV users if comments on Zap-map are representative) and one has to leave the car on charge when finishing the hire. When starting one has to remember to take the charging cable with the car.

My wife came along for the experience and she liked the leaf, unfortunately for me the foot parking brake caught me out and the driving position didn’t fit me – I’m quite tall and have an aforementioned dodgy left knee. We drove around Fife a little and I tried a couple of charging points. The Leaf had Android Auto which was excellent for quick navigation.

I didn’t quite gel with the Leaf which annoyed me slightly as it’s very popular but it eliminated it as a future option and having driven it I wouldn’t wish to do so again. Although performance was good when not in eco mode, the handling was a bit bouncy and the front wheel drive loaded up the steering quite a bit.

Nissan Leaf charging at a charger in Glenrothes
Nissan Leaf charging in Glenrothes

Fifth EV Drive – BMW i3 – Co Wheels Car Club

After a couple of months it came to city break time and a random internet search popped up a number of BMW i3 and MG ZS EV in Dundee. Rather than having a relaxing time in our accommodation I dragged my wife around Dundee in pursuit of trying different electric vehicles.

Co Wheels are slightly different than Enterprise in that they rely on a smart card only for managing the hire process but this worked fine for the two cars we tried.

Unfortunately the i3 was in short supply over the bank holiday weekend we were in Dundee so in the end I only managed to sneak in a short hire of 1.5 hours. This meant I didn’t get opportunity to go far or to try charging it up, but it was really handy being 5 minutes away from where we were staying at Staybridge Suites in Dundee. Finally note that the car club cars are on the top (13th) floor of the Olympia multi-storey. Top tip is that there are lifts at each end which is a lot faster if you have a time slot to make.

The i3 was the reverse of our experience with the Leaf – my wife didn’t get on with the seating position and the seat belt in particular was angled really uncomfortably for her. My wife is quite a bit shorter than me and the rear door arrangement means that the seatbelt is part of the reverse door. My driving position was fine with seat in it’s lowest position and right back.

Driving position was fine even if the seat was a bit flat, and driving dynamics were excellent – really good regen and a good punch out of roundabouts and at junctions. The challenge was the dashboard and view forwards – there is a large space between the front seats and the base of the windscreen. The short nose means it’s quite tricky to place the corners, where on an ICE car you have the sides of the bonnet (hood for non British readers). The age of the i3 also means that it doesn’t have Android Auto so one would have to use the built in kit (albeit being BMW based this was rather good).

The i3 was a bit out there and too small for us to have as a car, but as a drive was excellent.

Sixth EV Drive – MG ZS EV – Co Wheels Car Club

After the compact “city runabout” of the BMW i3 we hired an MG ZS EV in Dundee. This is a small SUV styled EV and although I have a slight aversion to SUVs I was in the mood to try everything.

I walked the mile or so to collect the MG and drove back to the hotel to pick up MrsL. Yet another way of engaging forward and reverse (this time a dial in the centre console) but the bonus of Android Auto made the navigation a doddle.

We took a drive to Perth and all was fine – a little bouncy but plenty of room, very easy to drive and pretty much eventless. I understand the MG is a good priced vehicle and it seemed a decent car – for an SUV! My wife liked the interior which had a little bit of a budget Mercedes theme going on and I even stopped off for a charge at the Garden Centre between Perth and Dundee. All in all a good car but I like sportier handling (like the i3!).

MG ZS EV Charging in Perth
Charging at Glendoick Garden Centre

Unfortunately things got complicated when I came to return the car. The Car Club Model means that you return the vehicle to it’s parking space and plug it in to charge. Unfortunately the charging session would not start and I ended up bouncing between Co Wheels and ChargePlace Scotland on the phone. I don’t know what the problem was but it was the only dampener on an otherwise eventless hire.

Fun with PowerShell, Azure Automation and Microsoft Teams

I’m currently working on a solution at work which is ultimately a contribution to our process of trying to keep on top of our proof of concept environments usage of networking and in particular ip address ranges. We have a rolling set of Azure Virtual Networks that vary in size from a class C to the occasional class A when we have a silly scale HPC or Kubernetes CNI requirement for a gazillion addresses in a big subnet.

The solution is coming together in very small building blocks and this post is to provide me (and you interwebs folks) with a reference to the filter syntax for List all teams in Microsoft Teams using Microsoft Graph.

Although the automation method shouldn’t really matter for what is effectively a big REST API, you know how it is when you have to translate syntax and fiddle around with quotation marks and things. Anyway, to cut a long story short the rough PowerShell script for List all teams in Microsoft Teams in PowerShell is:

# PowerShell to list all teams in your tenant
# Assumes you have set up your certificate authentication
$appId = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
$tenantId = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
$cert = Get-AutomationCertificate -Name 'AzureAutomationCertificate'

# Magic we are doing needs beta apis for the filter to work
Select-MgProfile -Name "beta"

# Authenticate to MS Graph
Connect-MgGraph -ClientID $appId -TenantId $tenantId -Certificate $cert

# Get list of Teams i.e. Groups with the special resource provisioning options set
$teams = Get-MgGroup -Filter "resourceProvisioningOptions/Any(x:x eq 'Team')"
$teamscount = @($teams).Count
Write-Verbose "The number of teams is $teamscount" -Verbose

# Close Connection to MS Graph
Disconnect-MgGraph

A few caveats and notes

  • This isn’t a full working example, in my case I’m using Azure Automation Runbooks and they are very very particular about their outputs and object handling. I’m still working on my translation.
  • It assumes you have done the work to create a self-signed certificate, create the app registration, uploaded the certificate to the app registration *and* set it up in your automation account. (I might do a meta post on this as I found one blog post that had the wrong parameters for the cert generation and generated a cert file of format cer with a pfx extension…)
  • This is being written for an Azure Automation Account in PowerShell, remember to add the relevant modules that are needed. I was adding individual modules as I found them first but you will probably be quicker just using Microsoft.Graph – you will find it in the gallery. Otherwise for the above you will need Microsoft.Graph.Authentication, and Microsoft.Graph.Groups.
  • If your tenant is anything like ours then you will always get 100 as the count of teams, due to the way that the apis manage their output length.
  • The script doesn’t do anything useful but I thought it might help to see the filter syntax

References, Source Material and Inspiration

How life goes in circles

That a significant pointer would be found in a response on GitHub by Darrel Miller is quite fascinating. I met Darrel on the expo floor at Microsoft Ignite in Orlando in 2018 and only really because I was after some “Swag” and had to get a card stamped by various Product Managers and Architects on the Microsoft 365 stand. At the time I was up to my neck in Azure and trying my best to get away from SharePoint (and Microsoft 365) and my discussions with the people on those stands were all to try and get me to talk to Graph and get back in to SharePoint Development with the new SPFx thing.

So it’s taken me about 2 and a half years, but I’m finally getting there. Thankyou Darrel – check him out on twitter etc!

Passed SC-300: Microsoft Identity and Access Administrator

I’m pleased to say that I recently passed Microsoft Exam SC-300 : Microsoft Identity and Access Administrator and as a result gained Microsoft Certified: Identity and Access Administrator Associate. I think this might be my first single-exam associate certification as all of the rest (including data platform last month) have all been the older style two exam format.

Badge describing Microsoft Certified Identity and Access Administrator
Microsoft Certified Identity and Access Administrator Badge

If this exam is anything to go by then the new set of Security and Compliance Microsoft Exams are a good move to recognise that Microsoft Cloud Architecture needs an understanding of how Azure and Microsoft 365 work together. Unfortunately I still see Enterprises having to remediate choices that came about as a result of Identity being implemented for a workload, then being overtaken as accidental conflicts come about due to narrow assumptions. That said, cloud has a habit of compressing things together as the Cloud Service Provider takes over the roles that had to be undertaken for on-premises!

Passed DP-900: Microsoft Azure Fundamentals

I’m pleased to say that I recently passed DP-900: Microsoft Azure Fundamentals. If you’ve come to this post via the home page then you’ll see that I recently passed DP-200 and DP-201 to achieve the Certified Data Engineer certification and as I had a discount voucher with 50% off an exam I decided to do another fundamentals exam.

Microsoft Certified: Azure Data Fundamentals
DP-900 Badge

Although my employer hadn’t asked, I decided to go for the set as a qualification for the Microsoft Partner Data Platform Competency. It appears that Microsoft are shifting away from the technical assessments that were delivered through partner university. This makes a bit of sense now that there are obvious public certifications available and while being a little more difficult, the fundamentals is more of a useful achievement.

From a personal milestone this is my 40th Microsoft Exam pass; way back before OneNote was a thing I started an exam ritual of creating a folder for the next exam I was targeting. In the small development company that was the first Microsoft Partner I worked at we used presentation binders for training packs – basically a ring binder with pockets in the front and spine for labelling. I would go through the ritual of creating a front cover for the binder, with my name, exam and “volume” number. I still go through this exercise and they have slowly counted up over the last year and a bit. Now my “exam process” tends to focus around OneNote but I still have a set of pipeline folders which have files related to an exam prep.

Microsoft Certification as a thing has ebbed and flowed through the years. Like a lot of things early in my career I just simply something because my employer asked me to. They wanted to get Microsoft Gold Partner and needed employees who had certifications. Thus started my journey with my first exam pass on April 19th 1996 which at the time of me writing this post is 25 years ago. That was also just under a year before I got married, so my long suffering wife has been with me for my entire certification journey!

Passed DP-201 Designing an Azure Data Solution

I’m pleased to say that I recently passed DP-201: Designing an Azure Data Solution. I did this a week after the DP-200 exam and gained my Microsoft Certified: Azure Data Engineer Associate Certification as a result.

As I mentioned in my post about DP-200 the learning paths are identical on the exam pages for DP-200 and DP-201 but one thing I discovered after DP-200 is that the certification page has additional learning paths which were helpful in augmenting my knowledge.

I found the exam slightly easier going and the score (which means little) was higher than I received for my DP-200 pass. I think this is fair on a number of levels, I don’t work with Azure Data every day so implementation was always going to be tougher.

Passed DP-200 Implementing an Azure Data Solution

I’m pleased to say that I recently passed Microsoft Exam DP-200: Implementing an Azure Data Solution. Although a new single exam is in the wings, I was ready to progress and had read that one benefit of the “current” Data Engineering Associate exams was that the renewal would still be 2 years rather than the new style of one.

As you’ll read on I sat DP-201 the week after this exam. Having reviewed the material available it was the same on Microsoft Learn so there was little more to be gained in the time.

For DP-200 I used Scott Duffy’s course on udemy and the learning paths featured on the exam page.

I found the exam fairly tough and of the three I did together it was the hardest, fairly I think.