#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 был написан неправильно. Теперь это работает! Спасибо, чувак.