Board logo

标题: [转载教程] 玩转PowerShell之(9)DNS [打印本页]

作者: HAT    时间: 2013-10-29 14:49     标题: 玩转PowerShell之(9)DNS

玩转PowerShell之(1)检测硬盘自由空间http://bbs.bathome.net/thread-27008-1-1.html
玩转PowerShell之(2)计算篇http://bbs.bathome.net/thread-27010-1-1.html
玩转PowerShell之(3)命令执行结果http://bbs.bathome.net/thread-27011-1-1.html
玩转PowerShell之(4)email篇http://bbs.bathome.net/thread-27012-1-1.html
玩转PowerShell之(5)偷偷下载http://bbs.bathome.net/thread-27013-1-1.html
玩转PowerShell之(6)数据库篇http://bbs.bathome.net/thread-27014-1-1.html
玩转PowerShell之(7)图形菜单http://bbs.bathome.net/thread-27016-1-1.html
玩转PowerShell之(8)email篇续  - 把gmail当相册http://bbs.bathome.net/thread-27017-1-1.html
玩转PowerShell之(9)DNShttp://bbs.bathome.net/thread-27018-1-1.html

好多天没有更新这个系列了,不是我偷懒,实在最近太忙,忙着学习C#。挺不错的语言,与PS很相近,其中的很多东西都是共通的。
今天和大家讨论一个关于DNS的话题。如何通过powershell来解析dns到主机名或者反过来?
大家可能最先想到ping命令,的确可以用这个命令来做,但我要讨论的是通过powershell本身来做,也就是不依靠外部命令来实现。
首先,我们试试从dns到ip地址的解析
给出一个dns比如www.google.com
$googledns="www.google.com"
然后,我们调用.net下面的dns类的gethostaddresses method很简单的一句话就可以实现
[system.net.dns]::gethostaddresses()
好我们这样写
$googleIPaddresses=[system.net.dns]::gethostaddresses($googledns)
这时候要注意$googleIPaddress不是一个对象,而是多对象,我们只需要其中的IP地址。可以用foreach来实现显示
foreach($ip in $googleIPaddresses)
{
$ip.ipaddresstostring
}
呵呵,完成了结果应该如下
72.14.253.104
72.14.253.147
72.14.253.99

下面我们看看怎么把IP地址反向解析成dns地址。还是用google为例,72.14.253.104这个地址对应什么dns地址呢。
$unknownip="72.14.253.104"
$dns=[system.net.dns]::gethostentry($unknownip).hostname
注意上面一句我在后面加上了hostname属性,直接把dns值赋值给$dns这个变量,应为该method返回的是一个对象,所以我可以直接引用该对象的某个属性。
这时候敲入$dns就会得到其dns地址。

怎么样用.net实现也很简单吧?

http://bbs.winos.cn/thread-33815-1-1.html
作者: PowerShell    时间: 2013-10-29 16:08

好多天没有更新这个系列了,不是我偷懒,实在最近太忙,忙着学习C#。挺不错的语言,与PS很相近,其中的很多东西都是共通的。-----------这句话搞不懂啊,是原帖作者说的?还是楼主说的?

楼上的帖子很好,都是前牛人写的,说明了原理和。net封装成powershell的过程。
不过呢,现在来看,稍有过时了,没错,powershell发展很快的,现在来讲(2013-10)dns的命令已经不是早先的散兵游勇了,而是组团成套了。对于初学者,学用最新版即可。
-----------------------------powershell何能无敌,唯(组团成套的)千万个命令也!-------------------------------------------
PS C:\Users\user001> get-command -module dnsclient

CommandType     Name                                               ModuleName
-----------     ----                                               ----------
Function        Add-DnsClientNrptRule                              dnsclient
Function        Clear-DnsClientCache                               dnsclient
Function        Get-DnsClient                                      dnsclient
Function        Get-DnsClientCache                                 dnsclient
Function        Get-DnsClientGlobalSetting                         dnsclient
Function        Get-DnsClientNrptGlobal                            dnsclient
Function        Get-DnsClientNrptPolicy                            dnsclient
Function        Get-DnsClientNrptRule                              dnsclient
Function        Get-DnsClientServerAddress                         获取网卡dns
Function        Register-DnsClient                                 dnsclient
Function        Remove-DnsClientNrptRule                           dnsclient
Function        Set-DnsClient                                      dnsclient
Function        Set-DnsClientGlobalSetting                         dnsclient
Function        Set-DnsClientNrptGlobal                            dnsclient
Function        Set-DnsClientNrptRule                              dnsclient
Function        Set-DnsClientServerAddress                         dnsclient
Cmdlet          Resolve-DnsName                                    类似于nslookup 可以实现楼上类似功能
作者: HAT    时间: 2013-10-30 14:40

回复 2# PowerShell


    纯转载,未修改。




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2