仅显示PowerShell所需的列

仅显示PowerShell所需的列,powershell,Powershell,我必须显示四列,但每次显示三列,因为空间问题,不需要显示列引用。此代码允许显示不在列引用中的单元格。当单元格匹配时,其他列中的单元格将消失 文件: 脚本: $csv = Import-Csv .\test1.csv -Delimiter ';' $ref = @($csv.ComputerName) foreach ($row in $csv) { foreach ($col in 'OtherComputerName', 'OtherComputer', 'AndAgain') {

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

文件:

脚本:

$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

这将完成您的工作:

$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

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

$csv | Select-Object OtherComputerName,OtherComputer,AndAgain
或者使用
-ExcludeProperty
删除已命名的属性-但必须至少有一个-属性(不必写出位置0,只需使用星号表示全部)

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

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
不是一个表,而是一个缩小的列:

$csv|select Othercomputer|where Othercomputer -ne ''
样本输出:

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

使用
Where Object
根据您想要的任何条件过滤输出,并使用
Select Object
仅输出您想要的列。请给我举个例子,我有点迷路了。我不知道如何使用它。你的问题不清楚你试图使用什么条件。当我排除列时,某些单元格之间仍然有很大的空间。是否可以停用它?像这样附加
|格式表-自动
$csv |选择对象*-排除属性计算机名|格式表-自动
?如果是,则不起任何作用。列不能小于标题。因此,不可能排除与第一列匹配的单元格?
$csv|select Othercomputer|where Othercomputer -ne ''
OtherComputer
-------------
infra-44
infra-8
infra-852