значения в этом CSV не редактируются - Powershell - PullRequest
0 голосов
/ 28 апреля 2020
$users = Import-Csv -Path "C:\scripts\door-system\test\testChange.csv" -Encoding UTF8
$users | ft

$output = forEach ($user in $users)
{
     if ($user.GroupName -like "Normal")
    {
        $output.GroupName = "edited"
    }
}

$output | export-csv .\modified.csv -noTypeInformation

1 Ответ

1 голос
/ 28 апреля 2020

у вас есть два глюка в вашем коде. [ ухмылка ]

1-й - это изменение коллекции $Output внутри l oop И присвоение выхода l oop коллекции $Output. делать одно или другое, а не оба.

2nd не выводит ничего для помещения в коллекцию $Output. это даст вам пустую коллекцию, так как вы присвоили вообще ничего .

вот моя версия и что она делает ...

  • фальсифицирует чтение в файле CSV
    когда вы будете готовы сделать это с реальными данными, удалите все #region/#endregion заблокировать и использовать Import-CSV.
  • устанавливает целевую и замещающую строки
  • повторяет импортированную коллекцию
  • проверяет цель в свойстве .GroupName каждого объекта
  • , если найден , он заменяет это значение строкой замены
  • отправляет измененный объект в $Results коллекцию
  • отображает $Results на экране
  • сохраняет $ Results в CSV файл

код ...

#region >>> fake reading in a CSV file
#    in real life, use Import-CSV
$UserList = @'
UserName, GroupName
ABravo, Normal
BCharlie, Abnormal
CDelta, Other
DEcho, Normal
EFoxtrot, Edited
FGolf, Strange
'@ | ConvertFrom-Csv
#endregion >>> fake reading in a CSV file

$TargetGName = 'Normal'
$ReplacementGName = 'Edited'

$Results = foreach ($UL_Item in $UserList)
    {
    if ($UL_Item.GroupName -eq $TargetGName)
        {
        $UL_Item.GroupName = $ReplacementGName
        }
    # send the modified data to the $Results collection
    $UL_Item
    }

# show on screen
$Results

# send to CSV
$Results |
    Export-Csv -LiteralPath "$env:TEMP\Connor Tuohy_-_Modified.csv" -NoTypeInformation

на экране вывода ...

UserName GroupName
-------- ---------
ABravo   Edited   
BCharlie Abnormal 
CDelta   Other    
DEcho    Edited   
EFoxtrot Edited   
FGolf    Strange

CSV файл ["C: \ Temp \ Коннор Туохи _-_ Modified.csv "] содержание ...

"UserName","GroupName"
"ABravo","Edited"
"BCharlie","Abnormal"
"CDelta","Other"
"DEcho","Edited"
"EFoxtrot","Edited"
"FGolf","Strange"
...