说到Powershell相信管理员都比较熟悉,当然powershell在windows下hen多服务都是有区别的,但是对于语法都是一样的,为什么说在微软的产品存在多个Powershell脚本呢,对于windows service使用的是系统自带的powershell,对于Microsoft Exchange服务又是单独的一个Powershell程序,最主要的是微软的公有云下需要单独下载Azure Powershell程序,对于不同服务需要使用不同的powershell程序执行不同的操作使用起来不方便,希望微软以后能融合,然后导入不同的模块进行不同的服务管理,具体的相关介绍就不多介绍了,所以就直接就进入主题了,近期公司部分网络做了一些特殊限制,对于某个作用域下的地址需要进行保留后才可以出网,所以这样就带出了相关的问题,对于公司来说地址分配是使用的是windows系统下部署的DHCP服务进行地址分发管理,想了很多方法,最终还是想通过powershell对作用域地址进行管理,今天介绍的内容主要有,使用powershell管理dhcp服务器配置,使用powershell查询作用域信息,最后使用powershell批量添加保留地址信息,具体见下:
我们可以参考微软的powershell管理DHCP的相关文档。
https://technet.microsoft.com/library/jj590751.aspx
1. 添加多个作用域的地址信息到DHCP保留区域。使用的参数命令为:Netshell
DHCP server服务器地址;如果在DHCP服务器本地执行指向127.0.0.1即可
Scope 为DHCP作用域信息;环境内如果有多个作用域的话也可以管理操作
Reservedip 为需要添加保留的IP地址信息
Reservedip后面的后面为需要添加保留IP地址信息所对应的Mac地址
ReservedName为保留名称
DescriptName为保留名称的描述信息
Both为保留地址信息的DHCP类型
1
|
Netsh dhcp server 127.0.0.1 scope 10.10.10.0 add reservedip 10.10.10.13 02523idfafag "reservername" "Descript" "BOTH"
|
当然我们也可以通过定义变量来执行脚本;将需要变动的信息通过定义变量然后替换语句中的信息即可;
1
2
3
4
5
6
7
|
$serverip= '127.0.0.1'
$n= '10.10.10.0'
$ip= '10.10.10.13'
$m= 'agaggdi12424'
$resername= 'haha'
$desc= 'Descriptname'
Netsh dhcp server $serverip scope $n add reservedip $ip $m "$resername" "$desc" "BOTH"
|
如果更方便从本地txt中读取数据格式,然后传输到powershell的变量中执行,这样更方便,下期主要介绍;
1
|
127.0.0.1,10.10.10.0,10.10.10.100,03231d66et59,zhangsan,it,both |
首先使用powershell读取本地的txt文件内容
1
|
Get-connect c:\1.txt |
其实上面的介绍已经很明白了,使用的命令为Netsh commands for DHCP
https://technet.microsoft.com/zh-cn/library/bb490941.aspx
上面介绍了批量添加,下面就介绍如何显示DHCP Server的作用域配置信息
1
|
Netsh dhcp server v4 show all |
查看DHCP服务器的绑定信息
1
|
Netsh dhcp server show bindings |
我们可以参考帮助文档
http://www.feiesoft.com/windows/cmd/netsh_dhcp.htm
查询指定作用域的地址信息
1
|
netsh dhcp server 192.168.0.1 scope 192.168.0.0 dump |
通过指定的ip地址查询对应的mac地址
1
|
(netsh dhcp server scope 10.10.10.0 show clients | where {$_ -match "10.10.10.13" }) - split "_" -replace "" , ""
|
如果批量查询的话,我们需要添加多条语句进行执行
定义变量查询指定作用域网段的ip地址信息和mac地址
1
2
|
$ip= '10.10.10.0'
(netsh dhcp server scope $ip show clients) - split "_" -replace "" , ""
|
定义变量
1
2
3
|
$ip= '10.10.10.0'
$b= '10.10.10.13'
(netsh dhcp server scope $ip show clients | where {$_ -match "$b" }) - split "_" -replace "" , ""
|
如果需要将执行结果保存在指定目录下的话我们需要在执行脚本后 重定向即可
本文转自 高文龙 51CTO博客,原文链接:http://blog.51cto.com/gaowenlong/1759638,如需转载请自行联系原作者