我不能排除没有在我的table.The中显示的单元格下面的脚本允许显示不在ComputerName列中的值,如果这些单元格匹配,这些值就不会显示在结果中。
脚本:
$csv = Import-Csv .\test1.csv -Delimiter ';'
$ref = @($csv.ComputerName)
foreach ($row in $csv) {
foreach ($col in 'OtherComputerName', 'OtherComputer', 'AndAgain') {
if ($ref -contains $row.$col) { $row.$col = '' }
}
}
$csv | Select-Object * -ExcludeProperty ComputerName |Format-Table -auto文件:
ComputerName OtherComputerName OtherComputer AndAgain
infra-1 infra-852 infra-2 infra-99
infra-98 infra-85 infra-44 infra-23
infra-5 infra-8 infra-1 infra-10
infra-2 infra-55 infra-8 infra-70
infra-62 infra-5 infra-852 infra-5结果是:
OtherComputerName OtherComputer AndAgain
----------------- ------------- --------
infra-852 infra-99
infra-85 infra-44 infra-23
infra-8 infra-10
infra-55 infra-8 infra-70
infra-852 我想排除空单元格,但我不知道这些值是否存在但没有显示,有人能帮我吗?
预期结果:
OtherComputerName OtherComputer AndAgain
----------------- ------------- --------
infra-852 infra-44 infra-99
infra-85 infra-8 infra-23
infra-8 infra-852 infra-10
infra-55 infra-70发布于 2017-06-21 17:52:41
你想要的是可能的,但我不建议你这样做。在您的代码中,有行和列。其思想是沿着一行的数据是相关的。
在您的数据中,您在几个不同的列之后,其中一行上的数据与无关。所以从本质上讲,你需要的是3个不同的列表,而不是一个表。
我建议为你的结果创建不同的列表。有很多方法可以做到这一点;我已经通过创建一个具有列标题名称的变量来实现。
之后,如果您愿意,可以手动将这些值显示为表。
输入- test1.csv
ComputerName;OtherComputerName;OtherComputer;AndAgain
infra-1;infra-852;infra-2;infra-99
infra-98;infra-85;infra-44;infra-23
infra-5;infra-8;infra-1;infra-10
infra-2;infra-55;infra-8;infra-70
infra-62;infra-5;infra-852;infra-5代码:
$csv = Import-Csv .\test1.csv -Delimiter ';'
$ref = @($csv.ComputerName)
# get csv headers; exclude computername
$myheaders = ($csv | Get-Member | Where-Object {$_.MemberType -eq "NoteProperty" -and $_.Name -ne "ComputerName"}).Name
$j = 0 # a counter
foreach ($col in $myheaders){
# create a new variable that has the name of the column, and the value
# that you are after (in column but not in $ref)
New-Variable -Name $col -Value ($csv.$col | Where-Object {$_ -notin $ref})
$k++
if($k -gt $j){$j++} # get the longest column
}
# output formatted text, with left justified test that is 20 characters long.
# 0,1 and 2 are indexes that refer to the values after -f
"{0,-20}{1,-20}{2,-20}" -f "OtherComputerName","OtherComputer","AndAgain"
foreach($i in 0..$j){
"{0,-20}{1,-20}{2,-20}" -f $OtherComputerName[$i],$OtherComputer[$i],$AndAgain[$i]
}输出:
OtherComputerName OtherComputer AndAgain
infra-852 infra-44 infra-99
infra-85 infra-8 infra-23
infra-8 infra-852 infra-10
infra-55 infra-70https://stackoverflow.com/questions/44647166
复制相似问题