powershell-module/Az.Tools.Migration/Functions/Public/Get-AzUpgradeAliasSpec.ps1 (44 lines of code) (raw):
function Get-AzUpgradeAliasSpec
{
<#
.SYNOPSIS
Returns a dictionary containing cmdlet alias mappings for the specified Az module version.
.DESCRIPTION
Returns a dictionary containing cmdlet alias mappings for the specified Az module version.
.PARAMETER ModuleVersion
Specify the version of the module to import command aliases from.
.EXAMPLE
PS C:\> Get-AzUpgradeAliasSpec -ModuleVersion latest
Returns the cmdlet alias mappings table for latest Az version
#>
[CmdletBinding()]
Param
(
[Parameter(
Mandatory=$true,
HelpMessage="Specify the version of the module to import command definitions from.")]
[System.String]
[ValidateNotNullOrEmpty()]
[ValidateSet('latest')]
$ModuleVersion
)
Process
{
$path = Join-Path -Path $MyInvocation.MyCommand.Module.ModuleBase -ChildPath "\Resources\ModuleSpecs\Az\$ModuleVersion"
$version = Get-ChildItem -Path $path -Name
$aliasSpecFile = Join-Path -Path $path `
-ChildPath "$version\CmdletAliases\Aliases.json"
if ((Test-Path -Path $aliasSpecFile) -eq $false)
{
throw "No alias spec files found for Az $ModuleVersion"
}
$specFileRawJson = Get-Content -Path $aliasSpecFile -Raw
$specObjects = [Newtonsoft.Json.JsonConvert]::DeserializeObject($specFileRawJson, [AliasMapping[]])
$aliasMap = New-Object -TypeName 'System.Collections.Generic.Dictionary[System.String,System.String]' -ArgumentList (, [System.StringComparer]::OrdinalIgnoreCase)
foreach ($aliasObject in $specObjects)
{
$aliasMap[$aliasObject.Name] = $aliasObject.ResolvedCommand
}
Write-Output -InputObject $aliasMap
}
}