Azure Toolbox – Part One

Today I was working with someone new to Azure and they asked what tools should they use to manage Azure. It was a fair question, so I figured I would create a two part post to share the tools in my toolbox.

#1 Azure Cloud Shell

Azure Cloud Shell Screenshot

This one almost seems like cheating since it’s built into the Azure Portal. However, I’m amazed at how often I use it. Azure Cloud Shell provides a PowerShell or Bash shell right in the Azure Portal and works with any web browser – no software to install! All of the commands you’d expect, like the PowerShell Az cmdlets and Azure CLI, are at you fingers tips. In addition common tools like Ansible, Terraform and even OpenSSL are pre-installed.

Take the Azure Cloud Shell PowerShell Quickstart for a spin.

#2 Azure PowerShell AZ Module and Azure CLI

Azure CLI Screenshot

Now if the Azure Cloud Shell doesn’t work for you, you’re going to need to install the Azure PowerShell Az Module and/or the Azure CLI. Both of these tools will allow you to interact with Azure from the comfort of your computer. Now I’ve been asked should I choose one over the other, and the answer is – it depends. I would say get really familiar with one, but know when the other one may be a better choice. My preference is the PowerShell Module, but there are honestly many things that are way easier to do in the Azure CLI.

#3 Azure Storage Explorer

Azure Storage Explorer Screenshot

Once you start using Azure more, you’re going to need to interact with storage accounts frequently. The Azure Portal lets you do a lot – but there are some things that are so much easier with a client. The Azure Storage Explorer is a cross platform tool that makes it a breeze to interact with Azure Storage resources including Blob, File Shares, Queues and Tables. In addition, developers can interact with a local storage emulator.

#4 FileZilla

FileZilla Screenshot

OK, I know we just covered Azure Storage Explorer so you’re probably asking why do you need FileZilla? Well, if you do anything with App Services and have developers using older methods of deployment (cough cough SFTP), you’ll find FileZilla handy.

#5 Putty

Putty Screenshot

If you need to work with Linux VMs and you’re on Windows, you’re probably going to need to SSH into them. For this, I use Putty. If you download the bundle you’ll also get the PuttyGen tool for generating and working with keys.

#6 Azure Mobile App

When on the go and all you have is your phone, you may be able to do what you need from the Azure Mobile app. Available for iOS and Android, you can access a ton of Azure features, including the Azure Cloud Shell, which basically means you can do anything – as long as you know the commands.

#7 Azure Portal App

Azure Portal App Screenshot

The Azure Portal app is currently in preview and gives you full access to the Azure Portal via an app. I like it because it’s one less browser window to keep up with – and if you’re like me and have 3+ accounts you have to swap between, it gives you one more place to stay logged in. The Azure Cloud Shell is also at your fingertips. The only downside is it’s Windows only. Give it a try!

That’s a few tools I find myself using on a daily basis to interact with Azure resources. In part two I’ll cover a bunch of more obscure tools but super helpful nonetheless.

PowerShell Where() Method vs. Where-Object Cmdlet

In my last post I mentioned attempting to speed up a slow PowerShell script by swapping out Out-Null for > $null. Well, I’m back at it and trying to speed up the script a bit more.

I’m using several Where-Object cmdlets to find items that match a string using -like. The collections are rather large (40,000+ items) so it takes a while to find matching items.

PowerShell version 4 introduced a new Where() method that operates on arrays. The Where() method can be quite a bit faster compared to the Where-Object cmdlet. It can, however, use quite a bit more memory and in some cases might be slower, so as usual – your mileage may vary.

Example:

$files = Get-ChildItem -Path C:\ -Recurse -ErrorAction Ignore
In this case, Where() shaved 10 seconds off compared to Where-Object.

PowerShell Out-Null vs. $null

It’s always the little things. I was recently troubleshooting a slow PowerShell script which required piping the output of a long-running command to Out-Null. Now there may have been other ways to avoid this, but that’s another story.

A quick Google search led to *tons* of articles and posts on why never to use Out-Null (OK, there are reasons, but my particular use was not one of them) and instead redirect to $null.

So I swapped out | Out-Null for > $null and sure enough problem solved.

Here’s a quick snippet that shows the speed difference: