【问题标题】:merge multiple table to CSV powershell [duplicate]将多个表合并到CSV powershell [重复]
【发布时间】:2020-09-15 20:17:44
【问题描述】:

您好,下面有两张表

Computer A
------------
20.03
20.02
20.01       
Computer B
------------
20.03
20.02
20.01
XXX
XXX

您好我有一个问题是我想合并成一个 CSV,所以我需要先在下面实现:

Computer A      Computer B
------------    ------------
20.03           20.03
20.02           20.02
20.01           20.01  
                XXX
                XXX

我该怎么办?我有很多类似需要合并的表的东西 试了很多次,还是不行

【问题讨论】:

  • 表格是文字表格还是某种对象?如果它们只是文本,它们是单独的多行字符串还是单行字符串数组?
  • @Lee_Dailey 他们是我认为的 PSCustomObject。 $str 是 ComputerA $str |Select-Object @{Label='ComputerA';Expression={$_.ComputerA}},@{Label='ComputerB';Expression={ ?? }} ??是我不知道怎么办
  • @Dukeyu - 请在您的问题中添加非常重要信息。这些不是表格......它们是 PSCO,显示处理实际对象完全错误。

标签: powershell csv merge formattable


【解决方案1】:

首先将两个数组都转换为哈希表 - 这样我们可以快速查找一个值是否存在于一个或两个中:

$ComputerATable = @{}
$AObjects |ForEach-Object { $ComputerATable[$_.'Computer A'] = $_ }

$ComputerBTable = @{}
$AObjects |ForEach-Object { $ComputerATable[$_.'Computer B'] = $_ }

现在我们只需要遍历所有不同的计算机名称来构建我们的“合并表”:

$merged = $ComputerATable.Keys,$ComputerBTable.Keys |Sort-Object |ForEach-Object {
  # Create a new object with the value (if present) from either table
  [pscustomobject]@{
    'Computer A' = if($ComputerATable.ContainsKey($_)){ $_ }
    'Computer B' = if($ComputerBTable.ContainsKey($_)){ $_ }
  }
}

【讨论】:

    猜你喜欢
    • 2017-12-19
    • 2015-05-23
    • 2017-11-03
    • 1970-01-01
    • 2020-09-23
    • 2015-03-09
    • 2015-06-19
    • 1970-01-01
    • 2021-06-08
    相关资源
    最近更新 更多