Azure Automation Modules and Runbooks PowerShell 7.2

Hi All,
A few days ago, i opened up my Runbooks on Azure Automation Account. It tells you that PowerShell 7.1 and Phyton 2.7 are no longer supportet and provides you with a Link


Until now the AZ PowerShell did not support the Management of PowerShell 7.x Modules you had to use some tricks like i documented here
With the latest AZ 11.2.0 PowerShell Modules you can now Manage the PowerShell Modules 5.1 and 7.2 of your Azure Automation Account.
Check the AZ PowerShell Module Version
Get-InstalledPSResource AZ


From the Azure Portal you still can install Modules for 5.1, 7.1 and 7.2


Connect with Azure and List the Automation Accounts - we’re using icewolfautomation in this Blog Article
#Connect to Azure
Connect-AzAccount -Tenant icewolfch.onmicrosoft.com
#Get Automation Account
Get-AzAutomationAccount


Let’s check the MicrosoftTeams PowerShell Module in the GUI - what a strange Version Number of the PowerShell 7.2 Module


You can only list PowerShell 5.1 and Powershell 7.2 Modules
###############################################################################
# Get-AzAutomationModule
# https://learn.microsoft.com/en-us/powershell/module/az.automation/get-azautomationmodule?view=azps-11.2.0
###############################################################################
#Get Modules
$accountName = 'icewolfautomation'
$rgName = 'RG_DEV'
$ModuleName = "MicrosoftTeams"
#Get 5.1 Module
$RuntimeVersion = "5.1" #5.1, 7.2
Get-AzAutomationModule -AutomationAccountName $accountName -ResourceGroupName $rgName -RuntimeVersion $RuntimeVersion | Where-Object {$_.Name -match "$ModuleName"}
#Get 7.2 Module
$RuntimeVersion = "7.2" #5.1, 7.2
Get-AzAutomationModule -AutomationAccountName $accountName -ResourceGroupName $rgName -RuntimeVersion $RuntimeVersion | Where-Object {$_.Name -match "$ModuleName"}


Let’s remove the PowerShell 7.2 MicrosoftTeams PowerShell Module
###############################################################################
# Remove-AzAutomationModule
# https://learn.microsoft.com/en-us/powershell/module/az.automation/remove-azautomationmodule?view=azps-11.2.0
###############################################################################
#Remove Module
$accountName = 'icewolfautomation'
$rgName = 'RG_DEV'
$ModuleName = "MicrosoftTeams"
$RuntimeVersion = "7.2" #5.1, 7.2
Remove-AzAutomationModule -AutomationAccountName $accountName -ResourceGroupName $rgName -Name $ModuleName -RuntimeVersion $RuntimeVersion


As you can see in the Azure Portal the PowerShell 7.2 Module has been removed


Let’s add the PowerShell 7.2 Module MicrosoftTeams
###############################################################################
# New-AzAutomationModule
# https://learn.microsoft.com/en-us/powershell/module/az.automation/new-azautomationmodule?view=azps-11.2.0
###############################################################################
#Add Module
$ModuleName = "MicrosoftTeams"
$moduleVersion = "5.9.0"
$RuntimeVersion = "7.2" #5.1, 7.2
New-AzAutomationModule -AutomationAccountName $accountName -ResourceGroupName $rgName -Name $moduleName -ContentLinkUri "https://www.powershellgallery.com/api/v2/package/$moduleName/$moduleVersion" -RuntimeVersion $RuntimeVersion


In the Azure Portal you can see that the Module is beeing installed


If we look in PowerShell we can see the “PrivisioningState” set to “Creating”
#Get Modules
$accountName = 'icewolfautomation'
$rgName = 'RG_DEV'
$ModuleName = "MicrosoftTeams"
#Get 7.2 Module
$RuntimeVersion = "7.2" #5.1, 7.2
Get-AzAutomationModule -AutomationAccountName $accountName -ResourceGroupName $rgName -RuntimeVersion $RuntimeVersion | Where-Object {$_.Name -match "$ModuleName"}


When the Installation has been finished in Azure Portal


We check again in PowerShell and can see the “PrivisioningState” set to “Succeeded”
#Get Modules
$accountName = 'icewolfautomation'
$rgName = 'RG_DEV'
$ModuleName = "MicrosoftTeams"
#Get 7.2 Module
$RuntimeVersion = "7.2" #5.1, 7.2
Get-AzAutomationModule -AutomationAccountName $accountName -ResourceGroupName $rgName -RuntimeVersion $RuntimeVersion | Where-Object {$_.Name -match "$ModuleName"}


Runbooks
It seems that the Commands for PowerShell 7.2 Runbooks are not quite ready.
Create a new PowerShell 7.2 Runbook
###############################################################################
# New-AzAutomationRunbook
# https://learn.microsoft.com/en-us/powershell/module/az.automation/new-azautomationrunbook?view=azps-11.2.0
###############################################################################
#Create Runbook
$accountName = 'icewolfautomation'
$rgName = 'RG_DEV'
$Name = 'PS7Runbook'
$Type = 'PowerShell72' #PowerShell,PowerShell72
New-AzAutomationRunbook -Name $Name -Type $Type -AutomationAccountName $accountName -ResourceGroupName $rgName


The Runbook has been created but is not yet published


Publish a Runbook
###############################################################################
# Publish-AzAutomationRunbook
# https://learn.microsoft.com/en-us/powershell/module/az.automation/publish-azautomationrunbook?view=azps-11.2.0
###############################################################################
#Publish Runbook
$accountName = 'icewolfautomation'
$rgName = 'RG_DEV'
$Name = 'PS7Runbook'
Publish-AzAutomationRunbook -Name $Name -ResourceGroupName $rgName -AutomationAccountName $accountName


The Runbok has been published


But there is no Source Code in it


Get Runbook
###############################################################################
# Get-AzAutomationRunbook
# https://learn.microsoft.com/en-us/powershell/module/az.automation/get-azautomationrunbook?view=azps-11.2.0
###############################################################################
$accountName = 'icewolfautomation'
$rgName = 'RG_DEV'
$Name = 'PS7Runbook'
Get-AzAutomationRunbook -Name $Name -ResourceGroupName $rgName -AutomationAccountName $accountName #-ErrorAction SilentlyContinue


Delete Runbook
###############################################################################
# Remove-AzAutomationRunbook
# https://learn.microsoft.com/en-us/powershell/module/az.automation/remove-azautomationrunbook?view=azps-11.2.0
###############################################################################
#Remove Runbook
$accountName = 'icewolfautomation'
$rgName = 'RG_DEV'
$Name = 'PS7Runbook'
Remove-AzAutomationRunbook -Name $Name -AutomationAccountName $accountname -ResourceGroupName $rgName -Force


Import Runbook from a *.ps1 File
###############################################################################
# Import-AzAutomationRunbook
# https://learn.microsoft.com/en-us/powershell/module/az.automation/import-azautomationrunbook?view=azps-11.2.0
###############################################################################
# Import Runbook
$accountName = 'icewolfautomation'
$rgName = 'RG_DEV'
$Name = 'PS7Runbook'
$Type = 'PowerShell72' #PowerShell,PowerShell72
$scriptContent = @'
#Connect to Exchange with Managed Identity
$tenant = "icewolfch.onmicrosoft.com"
Connect-ExchangeOnline -ManagedIdentity -Organization $tenant
#Get Accepted Domain
Get-AcceptedDomain | Format-Table DomainName, DomainType
#Disconnect Exchange Online
Disconnect-ExchangeOnline -Confirm:$False
'@
Set-Content -Path .\Temp\ScriptContent.ps1 -Value $ScriptContent
Import-AzAutomationRunbook -Path .\Temp\ScriptContent.ps1 -Name $Name -ResourceGroupName $rgName -AutomationAccountName $accountName -Type $Type


The Runbook has been imported - but it’s not Published yet


Publish a Runbook
###############################################################################
# Publish-AzAutomationRunbook
# https://learn.microsoft.com/en-us/powershell/module/az.automation/publish-azautomationrunbook?view=azps-11.2.0
###############################################################################
#Publish Runbook
$accountName = 'icewolfautomation'
$rgName = 'RG_DEV'
$Name = 'PS7Runbook'
Publish-AzAutomationRunbook -Name $Name -ResourceGroupName $rgName -AutomationAccountName $accountName


And now the Runbook also has Code


Regards
Andres Bohren

Azure Logo


PowerShell Logo
