powershell выполняет поиск текста и, если найден, обновляет следующий столбец в файле csv

#powershell #csv #powershell-2.0

#powershell #csv #powershell-2.0

Вопрос:

У меня есть поле в файле csv, которое выглядит следующим образом. CN = TSCHA-MGMT01-V, OU = Виртуальные рабочие станции, OU = Acroplis, OU = Chennai, OU = WestTLRCorp, DC = jfr, DC = домен, DC = com

Я хочу выполнить поиск по этому полю, и если появляется слово Acroplis, следующее поле в файле csv называется Region . Я хотел бы заполнить это поле текстом EMEA, а затем экспортировать файл с новыми данными в новый CSV-файл. Файл CSV имеет формат

домен: apac

cn : BJZV0053

dn: CN = BJZV0053, OU = Тонкие клиенты, OU = BJZ, OU = GD2_9_4, OU = Компьютеры, OU = CN, DC = apac, DC = ime, DC = домен, DC = com

Операционная система : Windows XP Professional

Регион :

 $vmimport = Import-Csv "c:Scripts6182014VirtualData.csv"

if ($vmimport.dn | Select-String -pattern "Acroplis")
    {
    $vmimport.Region = "EMEA"}

Export-Csv C:ScriptsRegionFinal.csv
  

Ответ №1:

Я думаю, это то, что вам нужно:

 Import-Csv "c:Scripts6182014VirtualData.csv" | ForEach-Object {
    if ($_.dn -like "*Acroplis*") {
        $_.Region = "EMEA"
        }
    $_ | Export-Csv "C:ScriptsRegionFinal.csv" -NoTypeInformation -Append
    }
  

Если вам нужно что-то другое, вам нужно будет очистить ваши образцы данных. Например, ваш пример кода просматривает CN поле, но данные примера выглядят так, как будто они должны использовать DN поле.

Комментарии:

1. Тим, я внес изменения в код. Вы правы в том, что я хотел DN .. не CN. Я запустил скрипт, как у вас, но в поле Region ничего не заполнено: (

2. Я понял, Тим. Acroplis был написан неправильно. Теперь это работает! Спасибо, чувак.