[玩转系统] Resolve-DnsName:使用 PowerShell 解析 DNS 记录
作者:精品下载站 日期:2024-12-14 13:00:49 浏览:16 分类:玩电脑
Resolve-DnsName:使用 PowerShell 解析 DNS 记录
如果您正在管理 Web 或邮件服务器,您就会知道这些服务器对充分配置的 DNS 记录的依赖程度。丢失 DNS 记录可能会导致各种问题,包括用户无法找到您的网站或无法发送电子邮件。 PowerShell Resolve-DnsName cmdlet 的存在是一件好事,有了它,可以通过脚本自动监控 DNS 记录。
管理员的一天已经够充实的了,手动检查 DNS 记录是否可以正确解析意味着更多的手动工作。
在本文中,您将了解如何使用 Resolve-DnsName
cmdlet 通过 PowerShell 查询 DNS 记录。读完本文后,您还将了解如何创建基本脚本来生成要监控的指定 DNS 记录的报告。
先决条件
本文是一个演练,如果您打算按照示例进行操作,您将需要:
- 运行 Windows 10 或更高版本的计算机。
- Windows PowerShell 5.1 或 PowerShell 7.0
- 脚本编辑器,例如 Visual Studio Code、Atom 或 Notepad++。
Resolve-DnsName:PowerShell DNS 解析器
执行 DNS 查询的方法不止一种。 Resolve-DnsName
cmdlet 类似于 Windows 附带的 nslookup
命令行工具,如果您更了解的话,也可以使用 dig
命令。 Linux 管理员。
一些网站提供 DNS 记录监控/报告服务。但是,当然,这些第三方服务大多都是有成本的。还有一个免费的替代方案,它也可以让您展示您的脚本技能!
顾名思义,Resolve-DnsName
cmdlet 将 DNS 名称解析为 IP 地址,反之亦然。此 cmdlet 是 dnsclient PowerShell 模块的一部分,截至撰写本文时,该模块随 Windows 10、Windows Server 2012/R2、Windows Server 2016 和 Windows Server 2019 一起提供。
由于 Resolve-DnsName
是一个 PowerShell cmdlet,因此它将结果作为可存储、操作和导出的对象返回。例如,使用命令 Resolve-DnsName google.com
查找 google.com 的 DNS 记录会得到如下所示的输出。
结果以对象的形式返回,允许您将结果导出到CSV文件,或操纵格式以生成HTML报告。
Resolve-DnsName
cmdlet 与老式的 nslookup
实用程序不同。 nslookup
返回一个简单的字符串。您可以在下面的屏幕截图中看到一个示例。如果您需要解析任何这些信息,那将是一场斗争。
查询不同类型的DNS记录
默认情况下,Resolve-DnsName
查询 A 和 AAAA 类型的 DNS 记录。例如,如果您使用以下命令查找 gmail.com
的 DNS 记录:
Resolve-DnsName -Name gmail.com
如下所示,仅返回 AAAA 和 A 记录。这是因为未指定要查找的 DNS 记录类型。
现在,既然我们都知道 gmail.com 是 Google 电子邮件服务使用的电子邮件域,那么一定有一条与之关联的 MX 记录,对吧?好吧,无需假设何时可以使用此命令进行确认:
Resolve-DnsName -Name gmail.com -Type MX
下面屏幕截图中显示的输出显示了 gmail.com 的 MX 记录列表。
要了解有关可与 Resolve-DnsName
一起使用的不同记录类型的更多信息,请访问此链接并查找 -Type
参数的表格。或者您可以使用命令 get-help Resolve-DnsName
来参考 Resolve-DnsName 帮助。
使用特定服务器进行 DNS 查找
Resolve-DnsName
默认使用您计算机上配置的 DNS 服务器地址。但是,您也可以让 Resolve-DnsName
在执行查找时使用特定的 DNS 服务器。
例如,如果您想使用Google Public DNS来查找记录,您可以通过在命令中添加-Server
参数来实现,类似于下面的示例。
# Google Public DNS Server IPs
$dnsServer = @('8.8.8.8','8.8.4.4')
Resolve-DnsName adamtheautomator.com -Server $dnsServer
上面命令的结果与下面屏幕截图中显示的结果类似。
此时,您可能会问:“为什么我需要使用不同的 DNS 服务器?”。这是一个有效的问题。如果您尝试使用计算机的默认 DNS 服务器或其他 DNS 服务器查找相同的记录,您可能会得到相同的结果。
使用不同的 DNS 服务器与 Resolve-DnsName
的原因可能有很多。其中一些原因可能包括:
- 速度 - 某些 DNS 服务器的执行速度可能比其他服务器更快。
- 安全性 - 某些 DNS 服务器可能比其他服务器拥有更多的安全措施来防止劫持和攻击。
- 记录可用性 - 在大多数情况下,组织都有自己的内部 DNS 服务器,其中包含仅在内部解析的名称的区域和记录。在这种情况下,使用公共 DNS 服务器查找内部名称将会失败。
- DNS 服务器不转发请求 - 某些组织不允许 DNS 转发。使用它们对公共 DNS 记录进行 DNS 查找将会失败。
- 故障排除和测试 - 当您最喜欢的 DNS 服务器出现故障时,您可能需要使用不同的 DNS 服务器来测试您的查找。
使用 PowerShell 脚本报告 DNS 记录
现在您已经了解了如何使用 Resolve-DnsName
cmdlet 的基础知识,在本部分中,您将学习创建 PowerShell 脚本来监视和报告 DNS 记录。您应该能够应用迄今为止在前面几节中获得的知识来构建此脚本。
启动您选择的脚本编辑器并创建一个名为 GetDnsRecord.ps1 的新文件。
定义变量
首先,确定要使用的变量。这些变量将包括以下内容:
$NameList
- 该变量将保存您希望脚本查询的 DNS 记录的名称$Serverlist
- 使用此变量指示脚本将用于查找的 DNS 服务器。
复制下面的代码并将其粘贴到脚本的开头。
$NameList = @('adamtheautomator.com','powershell.org','xyz.local')
$ServerList = @('8.8.8.8','8.8.4.4')
执行 DNS 查找
接下来,代码必须能够查找每个指定名称的 DNS 记录。在本例中,foreach 循环将用于迭代记录列表并使用 Resolve-DnsName
查找每个名称。
$FinalResult=@()
行创建一个空数组,用于存储最终结果。然后,PowerShell 使用 foreach 循环将 $NameList
变量中的每一项传递给名为 $Name
的变量。
在每次迭代中,行 $tempObj="" | Select-Object Name,IPAddress,Status,ErrorMessage
创建一个具有四个属性的临时对象,用于保存后续 DNS 查找的结果。
接下来,try{}
语句用于运行 Resolve-DnsName
命令来查找 DNS A 记录并填充 $tempObj
值。如果 DNS 查找失败,catch{}
语句会捕获错误,并且该错误将包含在 $tempObj
对象中。
在每次迭代结束时,$tempObj
对象的值将附加到 $FinalResult
中。一旦处理完 $NameList 数组中的最后一项,循环就会退出。然后,将显示 $FinalResult
的值。
复制下面的代码并将其粘贴到脚本末尾。无需更改任何值。
$FinalResult = @()
foreach ($Name in $NameList) {
$tempObj = "" | Select-Object Name, IPAddress, Status, ErrorMessage
try {
$dnsRecord = Resolve-DnsName $Name -Server $ServerList -ErrorAction Stop | Where-Object { $_.Type -eq 'A' }
$tempObj.Name = $Name
$tempObj.IPAddress = ($dnsRecord.IPAddress -join ',')
$tempObj.Status = 'OK'
$tempObj.ErrorMessage = ''
}
catch {
$tempObj.Name = $Name
$tempObj.IPAddress = ''
$tempObj.Status = 'NOT_OK'
$tempObj.ErrorMessage = $_.Exception.Message
}
$FinalResult += $tempObj
}
return $FinalResult
保存脚本后,通过调用其名称 GetDnsRecord.ps1 在 PowerShell 中运行它。下面的演示显示了输出。
从上面的结果可以看出,输出是一个对象,如果您想使用下面的命令将结果导出到 CSV 等文件,该对象非常有用。
.\GetDnsRecord.ps1 | Export-Csv DnsRecord.csv -NoTypeInformation
CSV 输出看起来类似于下面的输出。
结论
在本文中,您了解了如何使用 Resolve-DnsName
cmdlet 在 PowerShell 中执行 DSN 记录查找的基础知识。您还了解了 Resolve-DnsName
与 nslookup 实用程序等其他工具的不同之处。
您已经了解了如何在脚本中使用 Resolve-DnsName
来自动执行 DNS 记录查找。这作为监控工具非常有用,可确保您了解您所管理的 DNS 记录的当前状态。
使用您的 PowerShell 脚本编写技能,可以通过添加代码来进一步增强报告脚本,以通过电子邮件自动将报告发送给指定的收件人。还可以对其进行修改以创建视觉上令人愉悦的 HTML 输出。
最后,无论您手动使用还是在脚本中自动使用,Resolve-DnsName
都是一个出色的 DNS 查找工具。现在您已经了解了它的工作原理,并且您可以找到将其用作管理任务的一部分的方法。
进一步阅读
- Google 公共 DNS
- 回归基础:了解 PowerShell 对象
- Export-Csv:将 CSV 文件视为一等公民的 PowerShell 方式
- PowerTip:使用 PowerShell 获取 DNS 设置
- 使用 ConvertTo-Html 在 PowerShell 中构建 HTML 报告
- 如何使用 PowerShell 创建 HTML 报告
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag