Powershell CSV导入循环

时间:2014-11-02 16:09:08

标签: powershell csv

我正在尝试使用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中出现两次。

0 个答案:

没有答案