Import-CSV关心我有重复的成员,但我需要重复

时间:2015-01-30 15:14:55

标签: powershell powershell-v4.0

我正在编写一个简单的PowerShell脚本来打开由我生成的CSV,并将每个元素推送到telnet会话以配置设备。但是,由于我有重复的成员,我的剧本甚至没有开始!如果有人有这方面的指导,请告诉我。

这是powershell,我并不精通它,我只是使用旧代码来测试它是否可行。

$CSVFile = Import-CSV "C:\Users\Alexander\Documents\AMSProvisioning\code.CSV"

foreach ($Line in $CSVFile){
    $GroupArray = $Line.split(",")
    foreach ($code in $GroupArray){
        "$code has been created!"
    }
}   

这是CSV文件。它只是一个命令列表,通常可以手动输入到配置/配置设备的交换机中。这也是一个测试CSV文件。

configure Equipment ont interface 1/1/1/3/1 sw-ver-plannd UNPLANNED sernum ALCL:7788h67a,"configure Equipment ont interface 1/1/1/3/1 desc1 ""Alex Manley""","configure Equipment ont interface 1/1/1/3/1 desc2 ""185 Alexander St""",configure equipment ont interface 1/1/1/3/1 admin-state down,configure equipment ont slot 1/1/1/3/1/1 planned-card-type 10_100base plndnumdataports 4 plndnumvoiceports 0 admin-state up,configure ethernet ont 1/1/1/3/1/1/[1...4] auto-detect auto,configure interface port uni:1/1/1/3/1/1/[1...4] admin-up,exit all,configure qos interface 1/1/1/3/1/1/[1...4] upstream-queue 0 bandwidth-profile name:BE_20Mb bandwidth-sharing uni-sharing,configure qos interface 1/1/1/3/1/1/[1...4] queue 0 shaper-profile name:100Mb_DOWN,configure bridge port 1/1/1/3/1/1/[1...4] max-unicast-mac 8,configure bridge port 1/1/1/3/1/1/[1...4] vlan-id 134 tag untagged,configure bridge port 1/1/1/3/1/1/[1...4] pvid 134 default-priority 0,configure interface port uni:1/1/1/3/1/1/[1...4] admin-up,exit all,configure equipment ont interface 1/1/1/3/1 admin-state up

2 个答案:

答案 0 :(得分:2)

好吧,在它没有标题的意义上,这不是真正的CSV。你不是真的希望它是一个CSV,说实话,你只是希望它是一系列命令。而不是Import-CSV,您要使用的是Get-Content。这不会创建具有属性的对象,但您可以在逗号上拆分字符串并获取可以处理的数组。类似的东西:

$commands = Get-Content 'C:\Users\Alexander\Documents\AMSProvisioning\code.CSV' |
    ForEach-Object{$_.Split(',')}

第一部分将CSV作为字符串数组导入。然后对于每一行,它在逗号上分割该行,创建一个单独命令的数组。所有命令都分配给$ code。

如果你需要每一行都是它自己的代码集,并且拥有一组代码集,你可以将每一行转换为一个对象,并让每个对象都有一个属性,即一个数组换行符号。类似的东西:

$commands = Get-Content 'C:\Users\Alexander\Documents\AMSProvisioning\code.CSV' |
    ForEach{New-Object PSObject -Prop @{'Code'=$_.split(',')}}

那样$ commands [0] .code($命令的第一条记录)将是从CSV文件的第一行派生的命令数组。我不记得如何制作阵列数组,这对你来说可能是理想的,但这应该可以很好地工作。

答案 1 :(得分:0)

而不是导入-CSV我已经切换到使用get-content,因为它几乎执行我需要的相同功能。对不起你的错误,但非常感谢你的帮助!