Public/Install-AzureCli.ps1

Function Install-AzureCli{
Param(

    [parameter(Mandatory = $False)]
    [uri]
    $Uri = "https://azurecliprod.blob.core.windows.net/msi/azure-cli-latest.msi",

    [parameter(Mandatory = $False)]
    [string]
    $PackageName = "Microsoft CLI 2.0 for Azure"
)

    $IsInstalled = Get-Package -Name $PackageName -ErrorAction SilentlyContinue

    if ($IsInstalled){
        Write-Verbose ("Package '{0}' version '{1}' is already installed" -f $PackageName , $IsInstalled.Version)
        Return
    }

    Write-Verbose ("Downloading '{0}'" -f $Uri)
    $FileBaseName = Split-Path -Path $Uri -Leaf
    $FilePath = Join-Path -Path $env:TEMP -ChildPath $FileBaseName
    Invoke-WebRequest -UseBasicParsing -Uri "https://azurecliprod.blob.core.windows.net/msi/azure-cli-latest.msi" -OutFile $FilePath

    Write-Verbose ("Installing '{0}'" -f $FilePath)
    $LogPath = Join-Path -Path $env:TEMP -ChildPath "az-cli.log"
    $ArgumentList = '/i "{0}" /qn /l*v "{1}"' -f $FilePath, $LogPath
    Start-Process -FilePath 'msiexec' -Wait -ArgumentList $ArgumentList

}