download-ssms.ps1
<#PSScriptInfo .VERSION 1.0 .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 ( [ValidateSet('en-us','de-DE')]$lang = 'en-us', [switch]$Download ) #### parsing ssms version ## $lang = "de-DE" $lang= "en-US" ## $uri = "https://docs.microsoft.com/$lang/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) " $Download_URI = Invoke-WebRequest $redirector.href -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 $uri Write-Output $object } else { Write-Error "Error Parsing $uri" } |