仅显示 PowerShell 所需的列

cha*_*rlo 4 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
Run Code Online (Sandbox Code Playgroud)

脚本:

$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
Run Code Online (Sandbox Code Playgroud)

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             
Run Code Online (Sandbox Code Playgroud)

预期结果:

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
Run Code Online (Sandbox Code Playgroud)

小智 5

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

$csv | Select-Object OtherComputerName,OtherComputer,AndAgain
Run Code Online (Sandbox Code Playgroud)

或用于-ExcludeProperty删除命名的 - 但必须至少有一个 - 属性(位置 0 不必写出,只需对所有位置使用星号)

$csv | Select-Object * -ExcludeProperty ComputerName 
Run Code Online (Sandbox Code Playgroud)

这里的示例输出完全符合您的要求:

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
Run Code Online (Sandbox Code Playgroud)

不是一个表,而是一个缩小的列:

$csv|select Othercomputer|where Othercomputer -ne ''
Run Code Online (Sandbox Code Playgroud)

示例输出:

OtherComputer
-------------
infra-44
infra-8
infra-852
Run Code Online (Sandbox Code Playgroud)