首页 > 解决方案 > PowerShell - 如何将内容添加到 CSV 文件中的特定单元格

问题描述

我想就如何将内容添加到已包含填充数据的 CSV 文件中的特定单元格寻求您的帮助,这是我的 CSV 文件的示例: 带有填充数据的 CSV 文件

这是我想要实现的示例:

UPN Skype? 电视? 白板? 描述
房间1 真的 真的 真的 Skype;电视; 白板
房间2 真的 错误的 错误的 Skype
房间3 错误的 真的 真的 电视; 白板

如果room1有 Skype、TV 和 Whiteboard,则使用这些值创建描述。如果其中任何一个是错误的,请跳过它们。是否有意义?

如何使用 PowerShell 实现这一目标?

这是我到目前为止所得到的:

Import-Csv $MeetingRooms | ForEach-Object {
    # Description field on Column Number 19
    $col = 19

    if ($_.Skype -eq $true) {
        $var = 'Skype for Business;'
        Add-Content -path $_ -Value "$(","*$col)$var"
    }elseif ($_.TV -eq $true) {
        $var = 'TV;'
        Add-Content -path $_ -Value "$(","*$col)$var"
    }elseif ($_.Whiteboard -eq $true) {
        $var = 'Whiteboard;'
        Add-Content -path $_ -Value "$(","*$col)$var"
    }
}

我在这里错过了一些明显看不到的大东西。

非常感谢,贡萨洛

标签: powershellcsv

解决方案


以下假设具有索引的列19名为CurrentFacilities

Import-Csv $MeetingRooms | ForEach-Object {
  $obj = $_
  $obj.CurrentFacilities =
    ($obj.CurrentFacilities -split ';\s*') +
    ('Skype', 'TV', 'Whiteboard').Where({ $obj.$_ -eq 'true' }) -join '; '
  $obj # Output the modified object.
}

推荐阅读