Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PowerShell-将多个DNS服务器添加到新的DHCP作用域_Powershell_Dns_Dhcp - Fatal编程技术网

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

PowerShell-将多个DNS服务器添加到新的DHCP作用域,powershell,dns,dhcp,Powershell,Dns,Dhcp,我正在尝试使用PowerShell创建一些新的DHCP作用域,但在将3个DNS服务器添加到选项3时遇到了问题。我有一个包含所有信息的CSV文件,我尝试的DNS字段包括: DNS-1.1.1、2.2.2、3.3.3.3 DNS1-1.1.1.1 DNS2-2.2.2.2 DNS3-3.3.3 Import-Csv "C:\temp\DHCP.csv" | % { Add-DhcpServerv4Scope -StartRange $_.StartRange -EndRange $_.EndRang

我正在尝试使用PowerShell创建一些新的DHCP作用域,但在将3个DNS服务器添加到选项3时遇到了问题。我有一个包含所有信息的CSV文件,我尝试的DNS字段包括:

DNS-1.1.1、2.2.2、3.3.3.3

DNS1-1.1.1.1

DNS2-2.2.2.2

DNS3-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用于设置路由器,而不是DNS服务器
  • Set-DhcpServerv4OptionValue
    有一个用于设置DNS服务器的特殊参数,因此您不需要知道选项ID
  • 参数采用数组,而不是包含逗号的字符串
  • 问题1 您需要DNS的选项6(不要使用选项5)。但请再次参见第2节

    问题2 忽略
    -OptionID
    参数,改用
    -DnsServer

    问题3 此参数是数组类型,因此将值作为数组提供

    可能的工作代码:
    $dnsArray=$\.DNS1、$\.DNS2、$\.DNS3
    Set-DhcpServerv4OptionValue-ComputerName$\.DHCPServer-ScopeId$\.ScopeId-DnsServer$dnsArray
    
    编辑
    由于您正在批量执行此操作,您可能需要使用
    -Force
    ,这是。

    我刚刚遇到了同样的问题。。。但是在我的例子中,这些作用域不会有太大的变化,所以我不需要创建一个完整的脚本来运行多次,只需要运行一次就可以创建一组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}
    
    希望这对其他人有所帮助。

    适用于:

    $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",...
    

    我不知道为什么我把选项3。我的实际代码将其列为选项6。谢谢你指出这一点。至于你可能的工作代码,它是完美的。这正是我所需要的。非常感谢你!