前一段时间访问某网站被畜生给屏蔽了,于是我搜索出了一个国外的DNS地址,企图通过国外的DNS请求来获取一个该网站的其它IP,心存侥幸,不曾想竟然成功了。其原理是此DNS服务器不是智能解析,或着网站所有者没有启用智能解析,以至于来自中国的请求,它返回给了我一个欧洲的IP地址。
但是这样的DNS服务器,毕竟在国外,解析速度本来就不理想,甚至有时访问国内的网站,它解析成了国外的镜像地址:比如我今天访问PowerShell中文博客(www.pstips.net)时,明显感觉速度不是很理想,ping了一下,发现ping值在300-400之间,于是再查了一下这个IP地址:162.159.208.42,它是美国加利福尼亚的IP地址,恍然大悟,是由于上次更改DNS服务器引发的后遗症。
那就改回来呗,个人比较喜欢阿里的公共DNS,顺便秀一下,如何用PowerShell一键配置阿里云的DNS:
Get-DnsClientServerAddress -AddressFamily IPv4 | Out-GridView -PassThru | foreach { Set-DnsClientServerAddress -InterfaceIndex $_.InterfaceIndex -Addresses '223.5.5.5','223.6.6.6' } ipconfig /flushdns
使用上面的脚本,需要PowerShell 4.0支持,中途会弹出一个GridView,选择你要设置的网卡,记得支持多选奥,然后确定即可。
注意:要使用管理员权限运行才能设置成功,否则抛出异常:
Set-DnsClientServerAddress : 无法从客户端中访问 CIM 资源。
这异常未免太豪放了!
本文链接: https://www.pstips.net/set-dns-address.html
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
$wmi=get-wmiobject -class win32_networkadapterconfiguration -filter ipenabled=true -computername .
# 设置IP地址和子网掩码
$wmi.EnableStatic(‘192.168.0.100′,’255.255.255.0’)
# 设置网关
$wmi.SetGateways(‘192.168.56.254’)
# 设置DNS
$wmi.SetDNSServerSearchOrder(‘192.168.70.1’)
这个方法也可以设置dns地址,不过缺点是貌似只能设置一个,我用get-member查了一下,貌似也只有一个。
感谢九叔的分享!我相信Set-DnsClientServerAddress 底层调用的也是WMI。
从定义来看,是支持设置多个DNS地址的!
根据google到的信息,需要添加一个数组,通过引用的方式设置一个以上的DNS
$wmi=get-wmiobject -class win32_networkadapterconfiguration -filter ipenabled=true -computername .
$dnsSearchOrder =”8.8.8.8″,”114.114.114.114″
$wmi.SetDNSServerSearchOrder($dnsSearchOrder)
以上命令已测试,可以正常生效。不过如果想要全部设置成DHCP的是什么函数呢。
某网站被畜生给屏蔽了,哈哈哈
这个脚本在windows 8之前的平台应该是无法有效运行的,因为即使更新到PS 4
WIN8之前依然不支持 Get-DnsClientServerAddress等等若干网络地址相关的CMDLET
结果还是得去调用netsh来搞定,蛋疼