In the previous tip we explained how you can download port assignments via PowerShell from IANA. This process requires Internet access and can take a while. So here is code that looks for a cached CSV file. If it is present, port data is loaded from file offline, else the data is retrieved online, and a cache file is written. Note especially how Tee-Object is used to create the cache file:
$url = 'https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.csv'
$CSVFile = "$env:temp\ports.csv"
$exists = Test-Path -Path $CSVFile
Write-Warning "Retrieving data online..."
$portinfo = Invoke-WebRequest -Uri $Url -UseBasicParsing | `
Select-Object -ExpandProperty Content | `
Tee-Object -FilePath $CSVFile | ConvertFrom-Csv
Write-Warning "Loading cached file..."
$portinfo = Import-Csv -Path $CSVFile
$portinfo | Out-GridView
ReTweet this Tip!