#1 20.08.14 10:56
Изменение csv файла при помощи powershell
Этот язык скриптов начал изучать недавно и буквально на днях возникла следующая проблема:
Выгружаю из 1С 7.7 excel-файл, допустим со столбцами windowslogin и ФИО, добавляю туда столбец "должность", сохраняю это дело в csv формате, в кодировке utf-8.
Сейчас примерно накидал внешний вид скрипта:
$users=import-csv -delimiter ";" -path "Y:\Documents\gtt.csv"
foreach($user in $users)
{
$lgg=$user.windowslogin
$gll=$user.fio
write-host $lgg $gll
get-aduser -property title -searchbase "ou=xxx,dc=at,dc=local" -f {samaccountname -eq $lgg} | select name, title | sort name
}
Он без проблем всё находит/выводит. Как можно попытаться добавить в уже готовый стобец данные? Почему же он может считывать, а записывать напрямую в файл не может (сделал пару попыток через $user.title=blablabla и прочие)? Не уж то нужно заводить дополнительный массив, копируя туда $users+должность, а уже потом сохранять в новый файл?
Исправлено Lunat1k (20.08.14 11:02)
Offline
#2 20.08.14 21:04
Re: Изменение csv файла при помощи powershell
не разбираюсь в 1с, но в других языках поменять что-то в файле означает удалить старый и записать новый. иногда удаление делается автоматом. Ибо кластеры на HDD нельзя физически раздвинуть и что-то добавить.
Offline
#5 23.08.14 21:49
Re: Изменение csv файла при помощи powershell
материнка скидывает данные завернутые в протокол SATA в кармашек буфер обмена устройства диска (действо называется stream, поток). Диск берет данные из кармашка буфера и сам решает что с ними делать. Зависит от конкретной ситуации и модели диска.
Код: c#:
// Create a text file C:\temp\mcb.txt FileStream fs = new FileStream(@"c:\temp\mcb.txt" , FileMode.OpenOrCreate, FileAccess.Write); StreamWriter m_streamWriter = new StreamWriter(fs); // Write to the file using StreamWriter class m_streamWriter.BaseStream.Seek(0, SeekOrigin.End); m_streamWriter.Write(" File Write Operation Starts : "); m_streamWriter.WriteLine("{0} {1}", DateTime.Now.ToLongTimeString(), DateTime.Now.ToLongDateString()); m_streamWriter.WriteLine(" First Line : Data is first line \n"); m_streamWriter.WriteLine(" This is next line in the text file. \n "); m_streamWriter.Flush(); // Read from the file using StreamReader class // StreamReader m_streamReader = new StreamReader(fs); // string str = m_streamReader.ReadLine();
Offline

