Powershell CSV 按字段分组数据
Powershell CSV grouping data by fields
我在这里遇到了很大的困难,我被要求创建一个大脚本,该脚本将根据从 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 创建变量,这些变量将包含共享来自 "Hours" 的相同数据和来自 Date 列的相同 Date 的所有主机名?
我之所以需要这个,是因为我将使用以下逻辑在 SCCM 中创建集合:
- 创建一个集合,其中包含主机名 table 中的所有主机名,名称是时间和日期的组合 ("Myname 14-15 05.05.2019"),然后是
- 编辑该集合的属性以输入从小时列读取的数据以设置维护window(这基本上意味着我将使用包含小时和日期输入的变量,并将其放入维护window 使用为此目的制作的 powershell cmdlet)
有什么方法可以做到这一点,甚至可以让数据看起来像我需要的那样吗?
假设一个 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
我在这里遇到了很大的困难,我被要求创建一个大脚本,该脚本将根据从 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 创建变量,这些变量将包含共享来自 "Hours" 的相同数据和来自 Date 列的相同 Date 的所有主机名?
我之所以需要这个,是因为我将使用以下逻辑在 SCCM 中创建集合:
- 创建一个集合,其中包含主机名 table 中的所有主机名,名称是时间和日期的组合 ("Myname 14-15 05.05.2019"),然后是
- 编辑该集合的属性以输入从小时列读取的数据以设置维护window(这基本上意味着我将使用包含小时和日期输入的变量,并将其放入维护window 使用为此目的制作的 powershell cmdlet)
有什么方法可以做到这一点,甚至可以让数据看起来像我需要的那样吗?
假设一个 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