我正在尝试使用Powershell为ISC DHCP服务器创建dhcpd.leases文件。我在变量$ lease_import中导入了一个数组,并运行了以下代码。
当心;这段代码并不漂亮(根本不是)并且不打算成为。 (这是一次性使用的交易类型)
$input_file= Get-InputFile
$lease_import = ipcsv -Path $file_path -Delimiter "," | where {
($_.binding_state -ne "ABANDONED") -and ($_.mac_address -ne "") -and ($_.ends -match "2014")
}
$output_file = $($input_file | Split-Path) + "\dhcpd.leases"
if (Test-Path $output_file){
ri $output_file
}
ac $output_file "# The format of this file is documented in the dhcpd.leases(5) manual page.`n# This lease file was written by isc-dhcp-4.2.4-P2`n"
$end_time = $($(Get-Date).AddDays(7).ToString('yyyy-MM-dd') +" "+ $(Get-Date -Format T) -replace "-","/")
$lease_import | foreach {
ac $output_file "lease $($_.ip_address) {`n starts $($($($_.starts -replace ".......$","00") -replace "T"," ") -replace "-","/");`n ends $end_time;`n hardware ethernet $($_.mac_address);`n binding state active;`n}`n"
}
ac $output_file 'server-duid "\000\001\000\001\025\034G\301\000\000^\000\001\002";'
运行此代码将生成如下语句:
lease 10.116.3.9 {
starts 2014/10/31 09:59:00;
ends 2014/11/09 17:01:21;
hardware ethernet 00:1c:c4:96:bc:50;
binding state active;
}
对于数组中的每一行。运行此脚本后出现问题。如上所示的每个语句都在dhcpd.leases中出现两次。几个小时我已经查看了这段代码,但我无法弄清楚为什么会发生这种情况。导入的CSV文件不具有克隆行。每行都是独一无二的。
我忽略了什么吗?
编辑:上面的代码在将其导入DHCP服务器时会起作用,因为双重条目只需要应用两次,但我真的想弄清楚为什么它们首先在dhcpd.leases中出现两次。