Public/Install-azosdiactools.ps1

function Install-AzOSDIacTools {
    [CmdletBinding()]
    param (
        
    )
    
    begin {
        Block-StandardUser
        Write-Host "============================================================" -ForegroundColor Gray
        Write-Host "Searching for #Iac Tools on your system $env:COMPUTERNAME" -ForegroundColor Green
        Write-Host "============================================================" -ForegroundColor Gray
        write-host ""

        try {
            Write-Host "Searching for Terraform on your system $env:COMPUTERNAME" -ForegroundColor Green
            $resultterraform = Terraform --version
            Write-Host "Found Terraform on your system $env:COMPUTERNAME with the version $($resultterraform[0].split(" ")[1])" -ForegroundColor Cyan
            write-host ""

        }
        catch {
            Write-Warning "Terraform is not installed on your system $env:COMPUTERNAME"
            $Needinstallterraform = $true
        }
        try {
            Write-Host "Searching for bicep on your system $env:COMPUTERNAME" -ForegroundColor Green
            $resultbicep =  bicep --version
            Write-Host "Found bicep on your system $env:COMPUTERNAME with the version $($resultbicep)" -ForegroundColor Cyan
            write-host ""

        }
        catch {
            Write-Warning "Bicep is not installed on your system $env:COMPUTERNAME"
            $Needinstallbicep = $true
        }
        try {
            Write-Host "Searching for Azure Cli on your system $env:COMPUTERNAME" -ForegroundColor Green
            $resultazcli =  az --version
            Write-Host "Found Azure Cli on your system $env:COMPUTERNAME with the version $($resultazcli[0].Split(" ")[$resultazcli[0].Split(" ").count -1])" -ForegroundColor Cyan
            write-host ""
        }
        catch {
            Write-Warning "Azure Cli is not installed on your system $env:COMPUTERNAME"
            Write-Host ""
            $Needinstallazcli = $true
        }
    
    }
    
    process {
       
        if ($Needinstallbicep -eq $true ) {
            
            Write-Host "Installing bicep on your system $env:COMPUTERNAME" -ForegroundColor Green
            $installPath = "$env:USERPROFILE\.bicep"
            $installDir = New-Item -ItemType Directory -Path $installPath -Force
            $installDir.Attributes += 'Hidden'
            # Fetch the latest Bicep CLI binary
            (New-Object Net.WebClient).DownloadFile("https://github.com/Azure/bicep/releases/latest/download/bicep-win-x64.exe", "$installPath\bicep.exe")
            # Add bicep to your PATH
            $currentPath = (Get-Item -path "HKCU:\Environment" ).GetValue('Path', '', 'DoNotExpandEnvironmentNames')
            if (-not $currentPath.Contains("%USERPROFILE%\.bicep")) { setx PATH ($currentPath + ";%USERPROFILE%\.bicep") }
            if (-not $env:path.Contains($installPath)) { $env:path += ";$installPath" }
            $resultbicep =  bicep --version
            Write-Host "Found bicep on your system $env:COMPUTERNAME with the version $($resultbicep)" -ForegroundColor Cyan
            write-host ""

        }

        if ($Needinstallazcli -eq $true) {
            Write-Host "Installing Azure CLI on your system $env:COMPUTERNAME" -ForegroundColor Green
            Invoke-WebRequest -Uri https://aka.ms/installazurecliwindows -OutFile .\AzureCLI.msi
            Start-Process msiexec.exe -Wait -ArgumentList '/I AzureCLI.msi /quiet'
            rm .\AzureCLI.msi 
            # Add Terraform to your PATH
            $currentPath = (Get-Item -path "HKCU:\Environment" ).GetValue('Path', '', 'DoNotExpandEnvironmentNames')
            if (-not $currentPath.Contains("C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\wbin")) { setx PATH ($currentPath + "; 'C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\wbin'") }
            if (-not $env:path.Contains( "C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\wbin")) { $env:path += "; 'C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\wbin'" }
            $resultazcli =  az --version
            $Azcliversion = $az[0].split(" ")[$az[0].split(" ").count -1]
            Write-Host "Found Azure Cli on your system $env:COMPUTERNAME with the version $($Azcliversion)" -ForegroundColor Cyan
            write-host ""
        }

        if ($Needinstallterraform -eq $true) {
            Write-Host "Installing Terraform on your system $env:COMPUTERNAME" -ForegroundColor Green
            $installPath = "$env:USERPROFILE\.terraform"
            $installDir = New-Item -ItemType Directory -Path $installPath -Force
            $installDir.Attributes += 'Hidden'
            # Fetch the Terraform CLI binary
            (New-Object Net.WebClient).DownloadFile("https://releases.hashicorp.com/terraform/1.2.3/terraform_1.2.3_windows_amd64.zip", "$installPath\terraform_1.2.3_windows_amd64.zip")
            Expand-Archive "$installPath\terraform_1.2.3_windows_amd64.zip" -DestinationPath "$installPath" -Force
            Remove-Item -Path "$installPath\terraform_1.2.3_windows_amd64.zip" -Force
            # Add Terraform to your PATH
            $currentPath = (Get-Item -path "HKCU:\Environment" ).GetValue('Path', '', 'DoNotExpandEnvironmentNames')
            if (-not $currentPath.Contains("%USERPROFILE%\.terraform")) { setx PATH ($currentPath + ";%USERPROFILE%\.terraform") }
            if (-not $env:path.Contains($installPath)) { $env:path += ";$installPath" }
            $resultterraform = Terraform --version
            Write-Host "Found Terraform on your system $env:COMPUTERNAME with the version $($resultterraform[0].split(" ")[1])" -ForegroundColor Cyan
            write-host ""

        }

    }
    
    end {
        Write-Host "============================================================" -ForegroundColor Gray
        Write-Host "Searching PowerShellModule for #Iac on your system $env:COMPUTERNAME" -ForegroundColor Green
        Write-Host "============================================================" -ForegroundColor Gray
        write-host ""
        Get-AzOSDModules
        Write-Host "============================================================" -ForegroundColor Gray
        Write-Host "End all #Iac Tools are present on your system $env:COMPUTERNAME" -ForegroundColor Green
        Write-Host "============================================================" -ForegroundColor Gray
        write-host ""

    }
}