Powershell CSV按字段分组数据

时间:2019-06-07 18:51:29

标签: powershell csv sccm

我在这里遇到了很大的困难,我被要求创建一个大型脚本,该脚本将根据从CSV文件获取的变量在SCCM控制台中执行某些操作。 我已经介绍了SCCM脚本编制部分,因为我认为这会比较困难...但是似乎我不知道如何从CSV读取数据...

是否可以从如下文件中获取数据:

Hostname  Hours  Date
S1        14-15  05.05.2019
S2        14-15  05.05.2019
S3        9-13   06.05.2019

并使用powershell创建变量,该变量将包含共享“小时”中的相同数据和来自“日期”列的相同日期的所有主机名?

之所以需要它,是因为我将使用以下逻辑在SCCM中创建集合:

  • 创建一个包含主机名表中所有主机名的集合,其名称是时间和日期的组合(“ Myname 14-15 05.05.2019”),然后是
  • 编辑该集合的属性以输入从“小时数”列中读取的数据以设置维护窗口(这基本上意味着我将使用包含“小时数”和“日期”输入的变量,并将其放入维护窗口中,为此目的使用了powershell cmdlet)

有什么方法可以做到,甚至有可能使数据看起来像我需要的吗?

1 个答案:

答案 0 :(得分:3)

假设一个csv文件input.csv

Import-Csv .\Input.csv | 
  Group-Object Hours,Date | 
    ForEach-Object {
      [pscustomobject]@{
        Name      = "Myname {0} {1}" -f ($_.Name -Split ', ')
        HostNames = $_.Group.HostName -Join '; '
      }
    }

产量:

Name                    HostNames
----                    ---------
Myname 14-15 05.05.2019 S1; S2
Myname 9-13 06.05.2019  S3