在前一个技能中我们介绍了如何用 PowerShell 通过 IANA 下载端口分配信息。这个过程需要 Internet 连接并且需要一段时间。所以以下代码会查找缓存的 CSV 文件。如果缓存文件存在,端口信息会从离线文件中加载,否则将在线加载数据,并写入缓存文件。请特别注意如何使用 Tee-Object
命令创建缓存文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| $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
if (!$exists) { Write-Warning "Retrieving data online..."
$portinfo = Invoke-WebRequest -Uri $Url -UseBasicParsing | ` Select-Object -ExpandProperty Content | ` Tee-Object -FilePath $CSVFile | ConvertFrom-Csv } else { Write-Warning "Loading cached file..." $portinfo = Import-Csv -Path $CSVFile }
$portinfo | Out-GridView
|