PowerShell脚本求助:域名解析结果关联及错误屏蔽方法
解决PowerShell域名解析脚本的两个需求
一、关联域名与对应IP输出
要把域名和解析出的IP绑定输出,可通过创建自定义结构化对象实现,同时捕获解析错误避免干扰。修改后的脚本如下:
$filePath = "C:\Users\G661600\Downloads\sublist.txt" Get-Content $filePath | ForEach-Object { $domain = $_ try { # 解析域名并提取IP字符串 $ips = [System.Net.Dns]::GetHostAddresses($domain) | Select-Object -ExpandProperty IPAddressToString # 每个域名可能对应多个IP,逐个生成关联记录 foreach ($ip in $ips) { [PSCustomObject]@{ 域名 = $domain IP地址 = $ip } } } catch { # 可选:将解析失败的域名及错误信息记录到日志 # "$domain 解析失败:$($_.Exception.Message)" | Out-File "解析错误日志.txt" -Append } } | Export-Csv -Path "域名解析结果.csv" -Encoding UTF8 -NoTypeInformation
核心说明:
- 用
[PSCustomObject]生成包含域名和IP地址的结构化输出,方便后续查看或导出 - 遍历每个域名解析出的所有IP,确保一对多的关联关系不丢失
- 通过
Select-Object -ExpandProperty直接提取IP字符串,避免输出冗余属性
二、屏蔽错误信息,仅保留有效解析结果
上述脚本通过try-catch块捕获解析失败的错误,默认不会将错误信息输出到控制台或结果文件。如果需要单独记录错误,只需取消catch块内的注释,就能把错误信息写入指定日志文件,实现有效结果和错误日志的分离。
若仅需静默屏蔽错误,也可在调用GetHostAddresses时添加-ErrorAction SilentlyContinue,但try-catch的方式更灵活,支持自定义错误处理逻辑。
内容的提问来源于stack exchange,提问作者Biswa
相关产品推荐
相关产品推荐

