使用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

原文地址:https://www.cnblogs.com/GoCircle/p/11325587.html

时间: 2024-08-30 16:09:06

使用PowerShell 测试DNS的相关文章

测试DNS服务的命令

测试DNS服务的命令 dig dig用于测试dns系统,因此不会查询hosts文件进行解析. dig - DNS lookup utility dig [@global-server] [domain] [q-type] [q-class] {q-opt}{global-d-opt} host [@local-server] {local-d-opt}[ host [@local-server] {local-d-opt} [...]] Where: domain is in the Domai

PowerShell操作DNS创建SRV记录

需求来源:某个组织的Active Directory域,其中的一部分域控制器的SRV记录会无缘无故的丢掉,dcdiag检查dns的时候,发现一大堆报错,看到报错基本就不想弄了,实在太多-- PowerShell可以快速的创建A记录和DNS记录. 我们看一下标准的SRV记录是什么样子的 PS C:\>Get-WmiObject -Namespace root\MicrosoftDNS -class microsoftdns_srvtype | ? {$_.DnsServerName -eq "

powershell脚本-DNS

function InstallDNS   {    servermanagercmd -q c:\role.xml|Out-Null    $xml=[xml](Get-Content c:\role.xml)    $dnsrole=$xml.servermanagerconfigurationquery.role|where{$_.id -eq "dns"}    if($dnsrole.Installed -eq $false)      {      servermanage

DNS主从服务,子域授权,view视图,日志系统,压力测试rsync配置

DNS主从服务,子域授权,view视图,日志系统,压力测试 DNS性能测试工具queryperfDNS查询过程: DNS主从建立: 环境: 主服务器:10.140.165.93 从服务器:10.140.165.169 关闭防火墙,关闭selinux. 主服务器建立: [[email protected] ~]# yum -y install bind-util bind #安装bind服务 [[email protected] ~]# vim /etc/named.conf #编辑主配置文件 o

DNS基本工作原理,及正反向解析和主从同步测试

DNS基本工作原理 及正反向解析和主从同步测试 域名系统DNS是一个分布式数据库,它在本地负责控制整个分布式数据库的部分段,每一段中的数据通过客户服务器模式在整个网络上均可存取,通过采用复制技术和缓存技术使得整个数据库可靠的同时,又拥有良好的性能. 一.基本工作原理 域名是分层次的.最顶部是根域:这一域上的信息驻留在从整个Internet中所选的一些根服务器上.在根域下面是顶级域,也就是国家代码或机构代码.国家代码的例子有SG(新加坡)和CA(加拿大)等;而机构代码则包括众所周知的COM(商业机

DNS测试工具的使用(了解)

dig命令, host命令, nslookup命令,rndc命令 dig命令(直接测试DNS性能,不会查询/etc/hosts文件) dig [-t RR_TYPE] name [@SERVER] [query options] 如果[@SERVER]不写,那就使用本地指定的dns服务器,如果指定了就不会读本地的dns服务器 其中 [query options]为查询选项,可以使用 +[no]trace :跟踪解析过程 dig -t A www.baidu.com +trace +[no]rec

DNS客户端测试工具详解

由于DNS是用户接入互联网必须设置的,这里就以CentOS系统为例介绍DNS客户端的设置. 一.相关配置文件 我们知道,从主机名到IP的映射有两种方法,一种是把主机名和其对应的IP地址记录在hosts文件中,这是早期的方法.第二种方法是通过DNS服务器经过层级解析实现主机名到对应的IP地址的映射.这两种方法至今仍在系统上被采用,那么当用户需要解析主机名时,是先查找hosts文件而后再通过DNS架构解析呢?还是先进行DNS解析?它们的优先级如何?我们先看看相关的配置文件吧. /etc/hosts:

使用queryperf对DNS服务器作压力测试

一.querperf简介 当我们把DNS服务器配置好后,我们肯定会想测试一下DNS服务器的性能如何,上线后如果请求数够多服务器还能否响应?于是,我们可以使用软件模拟环境,对DNS服务器作评估性的测试.在bind中,有一款自带的压力测试软件,queryperf.使用这款软件可以对DNS服务器作请求测试,并且使用方法简单,我们可以使用queryperf测试多次,取一个平均值,这样就算结果不准确,也不会和实际情况相差太大. 二.queryperf安装 1.queryperf是bind自带的测试软件,所

powershell 脚本设置DNS

#!powershell $adapter = Get-NetAdapter |?{$_.InterfaceDescription -ne "Microsoft KM-TEST Loopback Adapter"} if ($adapter -ne $null)  {     $adapter | Rename-NetAdapter -NewName "Eth"      disable-NetAdapterBinding -Name "Eth"