Reputation: 11
I'm having troubles with a script. I need to remove all the duplicate rows in my XLS file. Here's my script:
sdsfsdf
$out_fcalias = "D:\scripts\SAN\Out_fcAlias.txt"
$out_flogi = "D:\scripts\SAN\Out_flogi.txt"
$out_zone = "D:\scripts\SAN\Out_zone.txt"
$out_zoneact = "D:\scripts\SAN\Out_zoneactive.txt"
$Final_Report= "D:\Scripts\SAN\Report_test.xls"
# Params
$i = ""
$tmp_splitArray = ""
$tmp_SwitchName = ""
$tmp_FabricName = ""
$tmp_ZoneName = ""
$tmp_Fcid = ""
$tmp_WWNName = ""
$tmp_Output = ""
# create xls
$XLS = new-object -comobject excel.application
$XLS.Visible = $True
$XLS_File = $XLS.Workbooks.Add()
$XLS_Sheet = $XLS_File.Worksheets.Item(1)
$XLS_Sheet.Name = "Report"
$XLS_Sheet.Cells.Item(1,1) = "Fabric"
$XLS_Sheet.Cells.Item(1,2) = "Zone"
$XLS_Sheet.Cells.Item(1,3) = "Fcid"
$XLS_Sheet.Cells.Item(1,4) = "WWN"
$XLS_Sheet.Cells.Item(1,5) = "Switch"
$XLS_Sheet.Cells.Item(1,6) = "FCID"
$XLS_Sheet.Cells.Item(1,7) = "Port Name"
$XLS_Sheet.Cells.Item(1,8) = "Node Name"
$XLS_Sheet.Cells.Item(1,9) = "Alias"
$XLS_LineCounter = 2
$a = get-content $out_zoneact
foreach ( $i in $a)
{
if ($i -match "Fabric") { $tmp_FabricName = $i}
if ($i -match "zone name")
{
$tmp_splitArray = [regex]::split($i, " ")
$tmp_ZoneName = $tmp_splitArray[2]
}
if ($i -match " fcid ")
{
$tmp_splitArray = [regex]::split($i, " ")
$tmp_Fcid = $tmp_splitArray[2]
}
if ($i -match "pwwn")
{
$tmp_splitArray = [regex]::split($i, " ")
$tmp_WWNName = $tmp_splitArray[4]
$XLS_Sheet.cells.item($XLS_LineCounter,1) = $tmp_FabricName
$XLS_Sheet.cells.item($XLS_LineCounter,2) = $tmp_ZoneName
$XLS_Sheet.cells.item($XLS_LineCounter,3) = $tmp_Fcid
$XLS_Sheet.cells.item($XLS_LineCounter,4) = $tmp_WWNName.Substring(0,$tmp_WWNName.Length-1)
$XLS_LineCounter = $XLS_LineCounter + 1
}
}
#autofit
$objRange = $XLS_Sheet.UsedRange
[void] $objRange.EntireColumn.Autofit()
$XLS_File.SaveAs($Final_Report)
$XLS_File.Close()
$XLS.Quit()
So I have a lot of duplicate rows, and I need to get rid of them programmatically, so I can put it in my script.
Upvotes: 1
Views: 4049
Reputation: 1
Sorry to update an old thread, but I spent a while working out why this didn't work. With regard to Mat M's solution, I find that you need to specfy the column indexes in an array as an argument.
$cols = 1,2,3,4,5,6,7,8,9
$XLS_Sheet.UsedRange.RemoveDuplicates($cols)
Upvotes: 0