Wednesday, April 29, 2015

I've just finished a most enjoyable couple of hours watching An AMA (ask me anything) interview with Jeffrey Snover, Microsoft Distinguished Engineer and inventor of PowerShell. Jeffrey and his teams) have brought about some awesome changes in terms of manageability of Windows systems. Anyone who has seen Jeffrey speak, know he is an amazing presenter – always full of interesting stories and a passion for helping us to be successful using Microsoft Tools. He is one of the best speakers at Microsoft, IMHO.

This two-part interview (part 1 here and part 2 here) has Jason Helmick ask Jeffrey a bunch of really interesting questions – ones that I see often when teaching PowerShell. If you've taken any of my PowerShell courses, many of these will not be new, but Jeffrey's spin on the question is absorbing and his vantage point unique. Things like, what were the obstacles he faced delivering PowerShell, is the information about PowerShell V3 relevant to PowerShell v5, why the V1.0 in the $Pshome path for PowerShell V5?, etc. Stuff any respectable IT Pro should know. My question would have been: Does he still carry the 20 dollar bill? He'll know what that is a reference to!

I highly recommend taking some time to watch these two videos. Doubly so if you want to get a better understanding why PowerShell is the future of Windows management.

Tuesday, April 28, 2015

Microsoft Press continues to pump out cool free e-books on Azure. The latest is Microsoft Azure Essentials: Azure Machine Learning (ISBN 9780735698178), by Jeff Barnes. It's the third of what I sure hope is a long set of free e-books.

Monday, April 27, 2015

I taught an Azure class week to a bunch of architects who were fairly new to Azure. It seemed to me that one of the subjects they had the most trouble getting to grips with was Azure Networking. Interoperating with Azure VMs (in a service and in a vnet) and Azure Paas instances is just different from on-premises networking, what with VIPs,DIPS, the complexity of VPNs, etc. There is nothing that can't be learned, but for seasoned architects used to on-premises networking many of the fundamentals are just plain different.

One small comment on this course (and some of Azure documentation) – there are not enough pictures. As this course progresses, I'd have liked to have seen more pictures containing the details. Nevertheless, the material is well covered.

This course has four units:

Introduction to Azure Networking Basics and VPN requirements

Plan and Design your Cloud Network Infrastructure

Configuring Azure and On Premises

Testing connectivity and Monitoring

Each module has a video – in the 4 modules the videos last around 55 minutes. Each module also has a slide presentation you can download and a short assessment to test your learning.

Monday, April 13, 2015

Microsoft has just issued a very cool new Azure Tool: Azure Resource Explorer. This tool is a web site within Azure: navigate to https://resources.azure.com/ and you get to the base.

Once you have logged in, you can use the tool to discover the Azure Resource Management APIs. These APIs are implemented as Rest APIs, where the URI is used to specify a specific resource, and JSON is used to hold the details of this resource. If you understand REST APIs, the concept is well understood. But if you come from a more traditional IT Pro background ('no developer foo foo here thank you"), understanding both Rest and the Azure REST APIs can be quite useful. And for those of you who smugly import the Azure module – remember that these cmdlets merely wrap the REST API. Running a cmdlet simply invokes the REST API.

The tool also enables you to view the API documentation. This is a fantastic bit of assistance for the developer, or an IT Pro who wants to use the API directly within a PowerShell script. Having said that, the documentation is not overwhelming. It is incomplete in places and in others, it's pretty thin. But this is something that no doubt will improve over time!

The final cool feature of the Tool is the ability to actually make API calls to your own Azure subscriptions. When you first open up the Explorer, you notice a tree control in the left most pane – this is the resource hierarchy tree. You can use the tree control to open up lower nodes, such as the configuration of a single VM.

Here is a screenshot of one of my Azure VMs. I have blacked out the subscription ID, but the rest is as you would see it. If you notice, the shape of the hierarchy in the tree control matches the shape of the URI. This is, of course, normal REST practice – but seeing it both as a URI and a tree helps me to visualise the resources.

In the screen shot, I show one VM. In the right pane you will see the 'data' relating to a resource. In this case, it's the details of a VM. The URI/Tree control points to a specific subscription and a specific resource group and to the VMs in that group (in this case just one). That VM has a bunch of properties (hardwareProfile, networkProfile, etc). The details of the resource, the VM, is expressed in JSON. If you issue an API call (eg a Get on this URI), you will get a JSON document back – and then use ConvertTo-JSON and ConvertFrom-Json cmdlets to interoperate with the data used with the API.

One final cool feature of this tool. If you look carefully ad the details of this VM – the line numbers in the JSON document are not fully contiguous – that's because I used the region folding feature of the explorer to hid details. Just click on the chevron to the right of a line number to hide/reveal what is below. Someone put a lot of thought into this explorer.

I hope further work is done, particularly in terms of improving the API documentation. But an even cooler feature would be to enable the Explorer to spit out a working PowerShell snippet to interact with the API. Much like MOW's old WMI explorer that showed you how to use WMI Methods. So you navigate to the resource you want to manage, select the HTTP Verb (Get, Put, Post, Delete) and then see how that verb would used against API expressed in the URI. It would include setting up the HTTP call, making the API call, then using the data from returned JSON.

Tuesday, April 07, 2015

It's that time of year, and with some upcoming PowerShell classes to teach, I've been rebuilding my classroom lab environment. Turns out the client wants some DSC content, and accordingly loaded the latest build of the DSC Resource Kit. What a wonderful set of extensions – I love the speed at which these evolve.
But once I'd loaded the Resource Kit on the 'client' box, I was not able to see any of the new resources. I could see the modules containing the resources, but not the DSC Resources themselves:
But a quick question on both Spiceworks and PowerShell.org's forums and the answer was easy. My rebuild of the lab had installed the RTM version of Server 2012 R2. For the resources to become available, I had to install three specific hotfixes:

Thursday, April 02, 2015

As I was writing another blog post last night, I discovered that the Azure PowerShell module has been updated – the new version is 0.8.16. The Azure module now boasts 606 cmdlets (and 35 aliases). The updated module has some new cmdlets (notably for Azure Insights), bug fixes and some changes to the Azure Websites cmdlets that partly reflect the removal of Web sites and their replacement (web apps).

You can get the updated module from https://github.com/Azure/azure-powershell/releases. This page features a download link to both the (updated) web platform installer and to a standalone MSI for just the module. The page also has some more details on what's new.

Interestingly – the updated module still supports for Azure web sites (e.g. New-AzureWebsite) despite the GUI (the Azure portal and the Azure preview portal) having dropped these in favour of the newly announced Web Apps functionality that in effect subsumes the older Web Sites feature). The Azure portals no longer show Web sites, whereas the cmdlets still support the feature. One noticeable and important difference here – the web site cmdlets do not appear to support the gallery function. So while creating a web site is pretty trivial, creating it via a gallery (e.g. a WordPress site complete with MySQL) does not appear possible (yet).