PowerShell Azure – Get-AzureExtensionHighestVersion

function Get-AzureExtensionHighestVersion {    [CmdletBinding()]    PARAM ([string]$extension, [string] $location=’AustraliaEast’)     $sortProps = @{Expression = “PublisherName”; Descending = $True}, @{Expression = “Type”; Descending = $True},@{Expression = “Version”; Descending = $True}    $Results= Get-AzureRmVmImagePublisher -Location $location |      Get-AzureRmVMExtensionImageType |       Get-AzureRmVMExtensionImage |        Where-Object {$_.Type -LIKE “*$extension*”}   #replace version…


Azure – DSC automation (Windows vs Linux)

{ “$schema”: “https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#”, “contentVersion”: “”, “parameters”: { “OS”: { “type”: “string”, “defaultValue”: “Windows”, “allowedValues”: [ “Linux”, “Windows” ], “metadata”: { “description”: “DSC extension selection setting. Linux, Windows” } }, “vmName”: { “type”: “string”, “metadata”: { “description”: “Name of the existing VM to apply the DSC configuration to” } }, “modulesUrl”: { “type”: “string”, “defaultValue”: “https://github.com/Azure/azure-quickstart-templates/raw/master/dsc-extension-azure-automation-pullserver/UpdateLCMforAAPull.zip”,…


PowerShell – DSC Linux MOFs and logs

working with DSC on Linux, there are a few things to know that don’t seem to be documented anywhere obvious.  OMI stuff  lives in /opt/omi/lib /opt/omi/bin  For troubleshooting you look at the logs which are here: cat /var/opt/omi/log/omiserver.log         #the OMI CIM server cat /var/opt/omi/log/dsc.log               #the LCM and DSC logging. Start your…


PowerShell Azure – Invoke-AzureRmVMRunCommand

Invoke-AzureRmVMRunCommand has a parameter -CommandId which the single example shows as -CommandId ‘RunPowerShellScript’ -ScriptPath ‘sample.ps1’ but the question that raises is – what other values can I give? A colleague showed me how to get the list of various CommandId values: Get-AzureRmVMRunCommandDocument -Location AustraliaEast EnableRemotePS – Configure the machine to enable remote PowerShell. (Windows) Ipconfig – List…


PowerShell – SharpCompress and untar

#needed to untar a tar.gz file and found the SharpCompress package, which will do it all! #region InstallPackage SharpCompress if  (-NOT (Get-Package -Name ‘SharpCompress’ -ErrorAction SilentlyContinue)) { #need to install it if (Find-Package -Name ‘SharpCompress’ -ErrorAction SilentlyContinue) { Find-Package -Name SharpCompress  | Install-Package -Verbose } else { if (-NOT (Get-PackageSource -Name ‘nuGet.org v2’ -ErrorAction SilentlyContinue))…


PowerShell – Get-Credential and certificates

Matthew Bongiovi  had a discussion on Get-Credential and how it works. So useful, that I thought I’d cut/paste it here so that you and I can refer to it in future! See below:   The Get-Credential cmdlet generates the prompt using the CredUIPromptForCredentials function. The documentation for that function says: “In the case of credentials…


PowerShell Azure – find a sku offer publisher

# who is the publisher for FreeBSD? What offer? What sku? # Find-AzureSKU bsd function Find-AzureSKU  {   Param ([parameter(Mandatory=$true,HelpMessage=’Enter a partial string of the  product’)]   [String] $sku,   [String] $location=’australiaeast’  )   $publishers = Get-AzureRmVMImagePublisher -location $location   foreach ($publisher in $publishers) {      $offers=Get-AzureRmVMImageOffer -location $location `        …


PowerShell – Expand-Aliases

#Requires -Version 3 function Expand-Aliases { <# .SYNOPSIS find any aliases in use and expand them to full cmdlet names. .DESCRIPTION Any scripts in ‘corporate’ or ‘formal’ use should have any aliases expanded. This removes ambiguity and any potential clashes or errors. .PARAMETER InputFiles The powershell .ps1 file(s) you wish to scan/repair for aliases. .EXAMPLE…


PowerShell – Try/Catch/Retry

# try/catch/fix and continue $tries = 0 while ($tries -lt 2) {    try {      $tries++      $ErrorActionPreference=’Stop’      # code I am testing goes here – perhaps with a param argument that needs changing      $tries++    }   catch { #fixup code goes here      $ErrorActionPreference=’SilentlyContinue’ # and the loop will now…


PowerShell – DSC Environment Analyser (DSCEA)

Awesome! An  open source release of DSC Environment Analyzer (DSCEA), a PowerShell module that uses the declarative nature of Desired State Configuration to scan systems in an environment against a defined reference MOF file and generate compliance reports as to whether systems match the desired configuration. For more information, check out: https://blogs.technet.microsoft.com/ralphkyttle/2017/03/21/introducing-dscea/ https://github.com/Microsoft/DSCEA https://www.powershellgallery.com/packages/DSCEA