仅显示PowerShell所需的列

时间:2017-06-19 14:36:42

标签: powershell

我必须每次显示四列,但每次显示三列,不需要显示列参考以解决空间问题。此代码允许显示列引用中不包含的单元格。当单元格匹配时,其他列中的单元格将消失。

文件:

  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)
foreach ($row in $csv) {
  foreach ($col in 'OtherComputerName', 'OtherComputer', 'AndAgain') {
    if ($ref -contains $row.$col) { $row.$col = '' }
  }
}

$csv

PS上的结果:我想不显示ComputerName列并退出单元格之间的空间。

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

2 个答案:

答案 0 :(得分:2)

您可以列出要包含的所有列/属性

$csv | Select-Object OtherComputerName,OtherComputer,AndAgain

或使用-ExcludeProperty删除已命名的 - 但必须至少有一个-Property(位置0不必写出来,只需使用星号表示所有)

$csv | Select-Object * -ExcludeProperty ComputerName 

此处的示例输出完全符合您的要求:

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

不是一张桌子,而是一张缩小的col:

$csv|select Othercomputer|where Othercomputer -ne ''

示例输出:

OtherComputer
-------------
infra-44
infra-8
infra-852

答案 1 :(得分:0)

这应该做你的工作:

$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 ComputerName , AndAgain