Office 365 IP címek lekérdezése PowerShell-ből

Több ügyfélnél előfordult már, hogy szeretnék a tűzfal beállításokhoz automatizálva letölteni az ip címeket. Erre azért van szükség, mert pl. az Exchange Online Protection-hoz csak az Office 365 felé szeretnék kinyitni a tcp/25 -ös portot. Ebben az esetben így néz ki a forgalom:

 

A tűzfal konfigurációhoz az alábbi PowerShell-el tölthetőek le a címek:

$updateUrl = "https://support.content.office.net/en-us/static/O365IPAddresses.xml"
$productName = "EOP"
try {
$ipList = New-Object System.Xml.XmlDocument
$ipList.Load($updateUrl)
catch {
Write-Host "Cannot download file $updateUrl" -ForegroundColor Red
break
}
if (-not ($ipList.ChildNodes.NextSibling)) {
Write-Host "Cannot process XML file $updateUrl. " -ForegroundColor Red
break
}
foreach ($prod in ($ipList.products.product | ? {$_.Name -match $productName} | Sort-Object Name)) {
$ip4Ranges = $prod | Select-Object -ExpandProperty Addresslist | Where-Object {$_.Type -match "IPv4"}
$ip4Ranges = $ip4Ranges | ? {$_.address -ne $null} | Select -ExpandProperty address
foreach ($ip4Range in $ip4Ranges) {
$res = New-Object -TypeName psobject -Property @{
'Product'=$prod.Name;
'IPv4Range'=$ip4Range;
}
$res | Select -ExpandProperty IPv4Range
}
}