新手求助:借助CSV批量添加DHCP作用域的PowerShell脚本修正
修正后的DHCP批量配置PowerShell脚本
第一步:调整CSV文件格式
确保DNS服务器字段支持多值,多个IP用英文逗号分隔,示例CSV结构如下:
ScopeName,StartRange,EndRange,SubnetMask,Router,DnsServers,ScopeID,FailoverPartner 校区1,192.168.1.10,192.168.1.200,255.255.255.0,192.168.1.1,8.8.8.8,1.1.1.1,DHCP-Failover-01 校区2,10.0.0.10,10.0.0.200,255.255.255.0,10.0.0.1,10.0.0.2,10.0.0.3,DHCP-Failover-01
第二步:修正PowerShell脚本
以下是修复了循环变量、文件路径、DNS多值问题的完整脚本:
# 读取CSV文件,路径用双引号包裹,支持带空格的路径 $Scopes = Import-Csv -Path "C:\DHCP_Scopes.csv" # 遍历每个校区的作用域配置,明确定义循环变量$Scope foreach ($Scope in $Scopes) { # 1. 添加DHCPv4作用域 Add-DhcpServerv4Scope -Name $Scope.ScopeName ` -StartRange $Scope.StartRange ` -EndRange $Scope.EndRange ` -SubnetMask $Scope.SubnetMask ` -State Active # 2. 设置DHCP选项值(路由、DNS),将DNS字符串拆分为数组 $DnsArray = $Scope.DnsServers -split "," | ForEach-Object { $_.Trim() } Set-DhcpServerv4OptionValue -ScopeId $Scope.ScopeID ` -Router $Scope.Router ` -DnsServer $DnsArray # 3. 添加故障转移作用域 Add-DhcpServerv4FailoverScope -Name $Scope.FailoverPartner ` -ScopeId $Scope.ScopeID }
关键修复说明
- 循环变量修正:将原脚本中误用的
$_替换为明确定义的$Scope,确保正确调用CSV中的字段 - 文件路径处理:CSV路径用双引号包裹,避免带空格路径报错;优先使用绝对路径,减少相对路径的不确定性
- DNS多值处理:通过
-split ","将CSV中逗号分隔的DNS IP字符串拆分为数组,满足Set-DhcpServerv4OptionValue的多值要求
注意:运行脚本前需以DHCP服务器管理员权限启动PowerShell,确保目标DHCP服务正常运行。
内容的提问来源于stack exchange,提问作者skatevans
相关产品推荐
相关产品推荐

