functions/Get-MicrosoftAzureDatacenterIPRangeFile.ps1
#requires -Version 3.0 function Get-MicrosoftAzureDatacenterIPRangeFile { <# .SYNOPSIS Downloads the Microsoft Azure Datacenter IP Ranges file .DESCRIPTION The Get-MicrosoftAzureDatacenterIPRangeFile cmdlet will download the Microsoft Azure Datacenter IP Ranges file from the Microsoft Downloads site (https://www.microsoft.com/en-us/download/details.aspx?id=41653). It should be noted that this file is updated on a weekly basis, so if you save this file, then you should re-download this file on a regular basis. This cmdlet makes use of Invoke-WebRequest. .EXAMPLE C:\PS> Get-MicrosoftAzureDatacenterIPRangeFile Returns an XML document from the Microsoft Azure Datacenter IP Ranges file .EXAMPLE C:\PS> Get-MicrosoftAzureDatacenterIPRangeFile -Path C:\Temp\AzureRanges.xml Dowloads the Microsoft Azure Datacenter IP Ranges file to C:\Temp\AzureRanges.xml .OUTPUTS XML document containing Azure Subnets, or Void if saving the file to the file system #> [CmdletBinding(DefaultParameterSetName = 'xml')] [OutputType([System.Xml.XmlDocument], ParameterSetName = 'path')] [OutputType([void], ParameterSetName = 'xml')] param( # Path where you want to save the XML file [Parameter(Mandatory = $false, ParameterSetName = 'path', Position = 0)] [String] $Path ) $MicrosoftDownloadsURL = 'https://www.microsoft.com/en-us/download/confirmation.aspx?id=41653' $DownloadPage = Invoke-WebRequest -UseBasicParsing -Uri $MicrosoftDownloadsURL $DownloadLink = ($DownloadPage.Links | Where-Object -FilterScript {$_.outerHTML -match 'Click here' -and $_.href -match '.xml'}).href[0] if ($PSCmdlet.ParameterSetName -eq 'path') { Invoke-WebRequest -UseBasicParsing -Uri $DownloadLink -OutFile $Path } else { $Request = Invoke-WebRequest -UseBasicParsing -Uri $DownloadLink $RequestXML = Select-Xml -Content $Request.toString() -XPath / $RequestXML.Node } } |