1

我遇到了脚本问题。我需要删除我的 XLS 文件中的所有重复行。这是我的脚本:

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()    

所以我有很多重复的行,我需要以编程方式摆脱它们,所以我可以把它放在我的脚本中。

4

2 回答 2

1

之后# autofit,插入

$XLS_Sheet.UsedRange.RemoveDuplicates()

应该可以工作,如MSDN中所提供

于 2012-09-23T22:43:50.500 回答
0

很抱歉更新了一个旧线程,但我花了一段时间才弄清楚为什么这不起作用。关于 Mat M 的解决方案,我发现您需要将数组中的列索引指定为参数。

$cols = 1,2,3,4,5,6,7,8,9    
$XLS_Sheet.UsedRange.RemoveDuplicates($cols)
于 2018-12-11T11:48:20.417 回答