我正在尝试使用 Powershell 中导入的 CSV 数据实现以下目标:
CSV 具有以下结构:
| FirstName | LastName | Tier |
| --------- | ------- | ---- |
| George | Smith | 0 |
| John | Fritz | 1 |
| Thomas | Adams | 1 |
| Manuel | Evans | 0 |
我按如下方式导入 CSV 数据:
$csv = Import-Csv csvfile.csv
现在问题来了。我正在尝试向对象添加更多线条
$csv
如果用户属于第 0 层,则应将相同的用户添加到第 1 层的对象中。
生成的 $csv 对象应如下所示:
| FirstName | LastName | Tier |
| --------- | ------- | ---- |
| George | Smith | 0 |
| John | Fritz | 1 |
| Thomas | Adams | 1 |
| Manuel | Evans | 0 |
| George | Smith | 1 |
| Manuel | Evans | 1 |
新的第 1 层行在对象中的放置顺序并不重要。它们应该位于包含所有原始数据的对象中的某个位置。我也不需要任何 CSV 文件中生成的第 1 层行。我只需要这些新行(成员)成为 $csv 对象的一部分,所有其他数据保持不变,这样我就可以使用 foreach 循环迭代同一对象中的原始数据和新数据。
到目前为止我尝试过但没有积极结果:
$csv = Import-Csv csvfile.csv
foreach ($User in $csv){
$tier = $User.Tier -replace '\s',''
if($tier -eq '0'){
$csv+= @{FirstName= $User.FirstName; LastName=$User.LastName; Tier='1'}
}
}
另一次尝试没有积极的结果:
$csv = Import-Csv csvfile.csv
foreach ($User in $csv){
$tier = $User.Tier -replace '\s',''
if($tier -eq '0'){
$csv | Add-Member -MemberType NoteProperty -Name 'FirstName' -Value $User.FirstName -Force
$csv | Add-Member -MemberType NoteProperty -Name 'LastName' -Value $User.LastName -Force
$csv | Add-Member -MemberType NoteProperty -Name 'Tier' -Value '1' -Force
}
}
在惨遭失败后,我向 StackOverflow 奇才寻求帮助。
我怎样才能做到这一点?如何使用不同的层值复制第 0 层行,同时将所有其他数据保持不变到同一对象中?