Download-SSMS.ps1


<#PSScriptInfo
 
.VERSION 1.2
 
.GUID 0747e082-3b13-4be0-9149-c1fb73c6dae1
 
.AUTHOR Karsten.Bott@labbuildr.com
 
.COMPANYNAME
 
.COPYRIGHT
 
.TAGS
 
.LICENSEURI
 
.PROJECTURI
 
.ICONURI
 
.EXTERNALMODULEDEPENDENCIES
 
.REQUIREDSCRIPTS
 
.EXTERNALSCRIPTDEPENDENCIES
 
.RELEASENOTES
 
 
#>


<#
 
.DESCRIPTION
 This script provides download linkand Version for latest SQL Server Management Studio
 
#>
 
[CmdletBinding()]
param (
<#
'en-us' = English
'de-DE' = German
'it-IT' = Italien
'fr-FR' = French
'ja-JP' = Japanese
'es-ES' = Spanish
'ko-KR' = Korean
'pt-BR' = Portuguese (Brazil)
'ru-RU' = Russian
'zh-CN' = Chinese (People's Republic of China)
'zh-TW' = Chinese (Taiwan)
#>

[ValidateSet('en-us','de-DE','it-IT','fr-FR','ja-JP','es-ES','ko-KR','pt-BR','ru-RU',
'zh-CN','zh-TW')]$lang = 'en-us',
[switch]$Download
)
$uri = "https://docs.microsoft.com/en-US/sql/ssms/download-sql-server-management-studio-ssms"
write-Host "Parsing $uri for SQL Server SSMS Version"
$result = Invoke-WebRequest -UseBasicParsing -Uri $Uri
if ($result)
    {
    Write-Host "Analyzing Content ... "
    $parse_test = $mytext = $result.Content -replace "<p>"
    $parse_test_elements = $parse_test -split "</p>"
    $Release = ($parse_test_elements | Select-String "The release number: ")
    $Build = ($parse_test_elements | Select-String "The build number for this release: ")
    [version]$Build  = $build -replace "[^0-9.]"
    [version]$Release = $Release -replace "[^0-9.]"
    Write-Host -ForegroundColor Magenta "Found Sql Server SSMS Version $($Release.ToString()) build $($Build.ToString()) "
    $redirector = $result.Links | where { $_.outerHTML -Match "Download SQL Server Management Studio" -and $_.outerHTML -NotMatch "Upgrade"}
    Write-Host "Parsing redirector link $($redirector.href)"
    Switch ($lang)
        {
        'de-DE'
            {
            $clcid ='0x407'
            }
        'en-US'
            {
            $clcid = '0x409'
            }
        'it-IT'
            {
            $clcid = '0x410'
            }
        'ja-JP'
            {
            $clcid = '0x411'
            }
        'ko-KR'
            {
            $clcid = '0x412'
            }
        'pt-BR'
            {
            $clcid = '0x416'
            }
        'ru-RU'
            {
            $clcid = '0x419'
            }
        'es-ES'
            {
            $clcid = '0x40a'
            }
        'fr-FR'
            {
            $clcid = '0x40c'
            }
        'zh-CN'
            {
            $clcid = '0x804'
            }
        'zh-TW'
            {
            $clcid = '0x404'
            }
    }
    $country_redirector = "$($redirector.href)&clcid=$($clcid)"
    $Download_URI = Invoke-WebRequest $country_redirector -UseBasicParsing -MaximumRedirection 0 -ErrorAction SilentlyContinue
    Write-Host "Found download Link $($Download_URI.Headers.Location)"
    if ($download.ispresent)
        {
        Start-BitsTransfer -Description "Downloading Sql Server SSMS Version $($Release.ToString()) build $($Build.ToString()) " -Destination "$HOME/Downloads" -Source $($Download_URI.Headers.Location)
        }
    $object = New-Object psobject
    $object | Add-Member -MemberType NoteProperty -Name Release -Value $Release
    $object | Add-Member -MemberType NoteProperty -Name Build -Value $Build
    $object | Add-Member -MemberType NoteProperty -Name URI -Value $($Download_URI.Headers.Location)
    Write-Output $object
    }
else
    {
    Write-Error "Error Parsing $uri"
    }