New PowerShell Module For Azure Automation: AzureServicePrincipalAccount

I’m currently working on a project where there has been a lot of discussion on how to use Azure AD Service Principals in Azure Automation and other solutions that involves any automated processes (i.e. VSTS pipelines). When signing in to Azure using a Service Principal, you can use either a key (password) or a certificate associated to the Service Principal. When using the Add-AzureRMAccount cmdlet, you can use one of the following parameter set: Key (password) based: Azure AD Tenant ID Azure Subscription Name or ID PS Credential object User name: Azure AD Application ID Password: Service Principal key Certificate

AzureTableEntity PowerShell Module Updated

I have updated the AzureTableEntity PowerShell module few days ago. The latest version is 1.0.3.0 and it is published at: PowerShell Gallery: https://www.powershellgallery.com/packages/AzureTableEntity/1.0.3.0 GitHub: https://github.com/tyconsulting/AzureTableEntity-PowerShell-Module/releases What’s changed? New function Merge-AzureTableEntity Merge one or more entities in a Azure table. Please make sure you understand the difference between Azure table merge and update operations: Update: replace entity fields with the the fields specified in the update operation Merge: update the value of existing fields specified in the merge operation If you want to update the value of an existing field and having the rest of the fields unchanged, make sure you

Deploying PowerShell Module from GitHub to a MyGet Feed using VSTS CI/CD Pipeline

Introduction Lately I have been playing with VSTS and its CI/CD capabilities. Since I have been writing a lot of PowerShell modules and I’m using GitHub and MyGet in this kind of projects, I thought a good scenario to build is to use VSTS CI/CD pipeline to automatically deploy the module from GitHub to my MyGet feed whenever I commit to the master branch for the particular PS module. In summary, this is the process: I commit code changes to master branch VSTS starts the build process (CI) fetch the artefact run pester test making sure the module can be

Inside OMS Book V2 Released

Few days ago, the Inside OMS Book version 2 has been released as a free ebook to the TechNet Gallery: http://bit.ly/InsideOMS A lot has changed since the first release of the book and even when we were writing the version 2, I constantly feel that we are shooting a moving target. Now looking back, we have been working very very hard over the last 10 months. Comparing with version 1, the size of the book increased from ~450 pages and 12 chapters to ~750 pages and 17 chapters.  This time, other than the authors, we are fortunate that we have

OpsMgr 2016 Agent Crashes SharePoint 2016 Site

Today I pushed the SCOM 2016 agent to my newly installed SharePoint 2016 server via the SCOM console. My SCOM management group is on 2016 RTM UR 3. Once the SCOM agent was installed, I could not launch SharePoint Central Admin site after a reboot. After turned off the custom error in web.config, I could see the exception: This is caused by the known issue with SCOM 2016 agent APM component (Application Performance Monitoring). My good friend Kevin Greene has already blogged this: http://kevingreeneitblog.blogspot.com.au/2017/03/scom-2016-agent-crashing-legacy-iis.html So to fix my issue, I followed Kevin’s instruction – reinstalled the SCOM agent using MOMAgent.msi

Free PowerShell OpsMgr Management Pack from Squared Up

Squared Up is releasing a new free management pack that provides several PowerShell related templates that allows SCOM administrators to create the following workflows: Name Type Description Run a PowerShell Script Diagnostic Runs a script as a diagnostic, returning text PowerShell Script Three State Monitor Monitor Runs a script and reports Healthy, Warning, or Critical based on the script output PowerShell Script Two State Monitor Monitor Runs a script and reports Healthy or Warning/Critical based on the script output Run a PowerShell Script Recovery Runs a script as a recovery, returning text PowerShell Script Alert Generating Rule Rule Raises Alerts

Azure Functions Demo: Voting App

Back in April this year, Pete Zerger (@pzerger) and I delivered two sessions in Experts Live Australia. One of which is titled “Cloud Automation Overview”. During this session, we have showed off a pretty cool voting demo app that is made up with Azure Functions, Key Vault, Azure SQL DB and Power BI. As shown above, this demo app allows attendees in our session to vote on a topic that we have chosen by scanning QR codes using mobile devices. In this case, since we were delivering the session in Melbourne Australia, we have decided to let people to vote

Preventing Azure Automation Concurrent Jobs In the Runbook

Recently when I was writing an Azure Automation PowerShell runbook, I had an requirement that I need to make sure there should be only one job running at any given time. Since this runbook will be triggered by a webhook from external systems, there was no way for me to control when and how the webhook would be triggered. So I had to add some logic in the runbook that only execute the core code block if there are no other jobs running. The key for this technique is to use the built-in variable that is available in any Azure

Programmatically Creating Azure Automation Runbook Webhooks Targeting Hybrid Worker Groups

In Azure Automation, you can create a webhook for a runbook and target it to a Hybrid Worker group (as opposed to run on Azure). In the Azure portal, it is pretty easy to configure this ‘RunOn’ property when you are creating the webhook. However, at the time of writing this blog post, it is STILL not possible to specify where the webhook should target when creating it using the Azure Automation PowerShell module AzureRM.Automation (version 3.1.0 at the time of writing). The cmdlet New-AzureRMAutomationWebhook does not provide a parameter where you can specify the webhook “RunOn” target: there are

PowerShell Function to Get Azure AD Token

When making Azure Resource Manager REST API calls, you will firstly need to obtain an Azure AD authorization token and use it to construct the authorization header for your HTTP requests. My good friend Stanislav Zhelyazkov (@StanZhelyazkov) has written a PowerShell function call Get-AADToken as part of the OMSSearch PowerShell module for this purpose. You can find it in the OMSSearch project’s GitHub repo: https://github.com/slavizh/OMSSearch/blob/master/OMSSearch.psm1 I have been using this functions in many projects in the past and it served me well. However, the limitation for Stan’s function is that it only works with user principals – you can only generate

%d bloggers like this: