使用PowerShell 测试DNS
Posted gocircle
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用PowerShell 测试DNS相关的知识,希望对你有一定的参考价值。
运行环境:Windows Server 2012 R2
获取服务器DNS命令,下面的仅获取一个dns
(nslookup sql.ciras.com)[1].split(‘:‘)[1].trim()
此脚本用来验证DNS是否正常,实际原理就是ping域名的ip
先ping域名
再解析域名的ip地址
判断域名是否解析域名是否为多个ip
若为多个ip,则再次ping文件中给的ip地址
最后输出表格
# 验证DNS是否能ping通
# author:lttr <www.cnblogs.com/GoCircle>
# date:2019-08-09 # eg. # C:\\Users\\0\\Desktop\\TestDNS.ps1 # 获取当前脚本绝对路径 $path = Split-Path -Parent $MyInvocation.MyCommand.Definition; $file = "\\域名及ip列表.txt"; # 读取txt文件获取列表信息 [array]$dnslist = (get-content -Path ($path + $file)) $sourcecount = $dnslist.Length-1 for($i=1;$i -le $sourcecount;$i++) Write-Progress -Activity "正在检测DNS列表" -PercentComplete ($i/$sourceCount*100) -Status "Step $i of $sourcecount" $dnsip = ($dnslist[$i] -split ",")[1] $flage = Test-NetConnection ($dnslist[$i] -split ",")[0] -Hops 1 -InformationLevel Quiet -ErrorAction SilentlyContinue -WarningAction silentlyContinue $dnsresult = Resolve-DnsName -Name ($dnslist[$i] -split ",")[0] -ErrorAction SilentlyContinue if($dnsresult.IPAddress.count -gt 1) $flage = Test-NetConnection $dnsip -Hops 1 -InformationLevel Quiet -ErrorAction SilentlyContinue -WarningAction silentlyContinue [PSCustomObject]@ 域名 = ($dnslist[$i] -split ",")[0].ToUpper() + " " DNS状态 = Switch($DNSLookupObject) !$flage"Ping失败 " $flage -and !($dnsresult.IPAddress -Match $dnsip)"IP不一致 " $flage -and $dnsresult.IPAddress -Match $dnsip"成功 " txt中IP地址 = $dnsip + " " Connection_IP地址 = $(if($flage)$dnsresult.IPAddress)
附带的txt文件格式
输入格式【域名,IP】(中间使用英文逗号分隔),请保留本行且不能包含空行。 www.baidu.com,127.0.0.1 www.baidu.com,127.0.0.2 www.baidu.com,127.0.0.3 www.baidu.com,127.0.0.4
以上是关于使用PowerShell 测试DNS的主要内容,如果未能解决你的问题,请参考以下文章
使用 powershell 安排 Visual Studio 负载测试给我 BSOD
使用 Powershell 中的 Stack,如何传递包含空格的测试参数?
如何使用PowerShell多线程并使用Pester Mocks进行单元测试
通过 npm 脚本从 Powershell 使用 --collectCoverageFrom 运行 Jest 测试时,转义引号和斜杠的正确方法是啥?