private/New-AzManagedIdentity.ps1

function New-AzManagedIdentity {
    [CmdletBinding()]
    param(
        [Parameter(Mandatory)]
        [string]$ManagedIdentityName,
        [Parameter(Mandatory)]
        [string]$ResourceGroupName,
        [Parameter(Mandatory)]
        [string]$Location
    )
    Write-Host "[az-bootstrap] Creating managed identity '$ManagedIdentityName'..."
    $existing = az identity show --name $ManagedIdentityName --resource-group $ResourceGroupName 2>$null | ConvertFrom-Json
    if ($existing) {
        Write-Host -NoNewline "`u{2713} " -ForegroundColor Green
        Write-Host "Managed identity '$ManagedIdentityName' already exists."
        $existing | Add-Member -MemberType NoteProperty -Name WasCreated -Value $false
        return $existing
    }
    $mi = az identity create --name $ManagedIdentityName --resource-group $ResourceGroupName --location $Location | ConvertFrom-Json
    if (-not $mi) { throw "Failed to create managed identity $ManagedIdentityName" }
    Write-Host -NoNewline "`u{2713} " -ForegroundColor Green
    Write-Host "Managed identity '$ManagedIdentityName' created."
    $mi | Add-Member -MemberType NoteProperty -Name WasCreated -Value $true
    return $mi
}