PowerShell-将多个DNS服务器添加到新的DHCP作用域

时间:2014-10-09 22:56:21

标签: powershell dns dhcp

我正在尝试使用PowerShell创建一些新的DHCP作用域但是在将3个DNS服务器添加到选项3时我陷入困境。我有一个CSV文件,其中包含我所有的信息和DNS字段。我试过的是:

DNS - 1.1.1.1,2.2.2.2,3.3.3.3

DNS1 - 1.1.1.1

DNS2 - 2.2.2.2

DNS3 - 3.3.3.3

Import-Csv "C:\temp\DHCP.csv" | % {
Add-DhcpServerv4Scope -StartRange $_.StartRange -EndRange $_.EndRange -SubnetMask $_.SubnetMask -Name $_.ScopeName -cn $_.DHCPServer -Description $_.Description -LeaseDuration $_.LeaseDuration -State Active -WhatIf
If ($_.Router -notlike "") {
Set-DhcpServerv4OptionValue -cn $_.DHCPServer -ScopeId $_.ScopeID -OptionId 3 $_.Router -WhatIf }
If ($_.TimeServer -notlike "") {
Set-DhcpServerv4OptionValue -cn $_.DHCPServer -ScopeId $_.ScopeID -OptionId 4 $_.TimeServer -WhatIf }
If ($_.DNS -notlike "") {
$DNSString=$_.DNS1 + ", " + $_.DNS2  + ", " + $_.DNS3
#Set-DhcpServerv4OptionValue -cn $_.DHCPServer -ScopeId $_.ScopeID -DnsServer $DNS -WhatIf }
Set-DhcpServerv4OptionValue -cn $_.DHCPServer -ScopeId $_.ScopeID -OptionID 3 $DNSString -WhatIf }

知道如何使用PowerShell在DHCP作用域中设置多个DNS服务器吗?任何帮助将不胜感激。感谢。

凯尔

3 个答案:

答案 0 :(得分:0)

有三件事对我很突出:

  1. 选项3用于设置路由器,而不是DNS服务器。
  2. Set-DhcpServerv4OptionValue有一个用于设置DNS服务器的特殊参数,因此您无需知道选项ID
  3. 该参数采用数组,而不是包含逗号的字符串。
  4. 第1期

    您希望DNS的选项6 (不要使用选项5)。但同样,请参见2.

    第2期

    忽略-OptionID参数并改为使用-DnsServer

    第3期

    此参数是数组类型,因此请将值作为数组提供。

    可能正在运行的代码:

    $dnsArray = $_.DNS1,$_.DNS2,$_.DNS3
    Set-DhcpServerv4OptionValue -ComputerName $_.DHCPServer -ScopeId $_.ScopeID -DnsServer $dnsArray
    

    修改

    由于您是批量执行此操作,因此您可能希望使用-Forceskips DNS server validation

答案 1 :(得分:0)

我刚遇到同样的事情......但在我的情况下,这些范围不会有太大变化,所以我不需要创建一个完整的脚本来运行多次,只是想运行一次来​​创建一堆dhcp范围(大约150个),同时包含所有选项。只需在开始时设置环境。

在一位朋友的帮助下(因为我正撞在墙上),这就是我们(真的是他)想出来的。希望它可以帮助那些人解决同样的问题:

在本例中,我创建了一个CSV文件“dhcpoptions.txt”,我的dhcp服务器名称为dhcp01.my.lab

CSV文件格式:

ScopeId;DnsServer;DnsDomain;Router
1.20.10.0;1.19.10.50,1.19.10.51;my.lab;1.20.10.1
1.20.11.0;1.19.10.50,1.19.10.51;my.lab;1.20.11.1

由于我基本上只运行了一次,而不是使用脚本,我只使用了一个PS命令:

import-csv .\dhcpoptions.txt -Delimiter ";" | % {Set-DhcpServerv4OptionValue -cn dhcp01 -ScopeId $_.ScopeId -DnsServer $_.DnsServer.split(',') -DnsDomain $_.DnsDomain -Router $_.Router}

希望这可以帮助那些人。

答案 2 :(得分:0)

适用于:

$dns="192.168.1.1","8.8.8.8",...

Set-DhcpServerv4OptionValue -ScopeId 192.168.1.1 -OptionId 6 -Value $dns

或直接:

Set-DhcpServerv4OptionValue -ScopeId 192.168.1.1 -OptionId 6 -Value 
"192.168.1.1","8.8.8.8",...