|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - Чтение информации из файла и передача ее на портал SharePoint |
|
PowerShell - Чтение информации из файла и передача ее на портал SharePoint
|
Новый участник Сообщения: 4 |
Добрый день!
Возникла потребность в считывании информации с файла, txt или csv, в которых находится 4 значения: время, и 3 числа - информация с расходомеров. Эти данные должны отправляться на портал в список, чтоб персонал мог наглядно видеть значения. При этом должна быть синхронизация значений из файла с порталом, когда в файл заносятся новые данные, на портале, допустим в 12 дня эта информация так же обновляется. На просторах интернета был найден пример с файлом контактов: Загрузка данных в список контактов SharePoint при помощи PowerShell $web = Get-SPWeb http://portal $users = Import-Csv -Delimiter "`t" -Path "c:\contacts.txt" $list = $web.Lists["Контакты"] #Выполните команду, которая позволит узнать имена полей в списке: #$list.Fields | select InternalName,Title | Out-GridView $users | where { $item = $list.AddItem(); $item["FirstName"]=$_.Firstname; $item["Title"]=$_.Lastname; $item["JobTitle"]=$_.Job; $item["Company"]=$_. Company; $item["WorkPhone"]=$_.Phone; $item.Update(); } |
|
Отправлено: 10:24, 25-07-2013 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Если б у меня был SharePoint… Но у меня и Вашего «файла, txt или csv» нет. А вот тому, у кого есть SharePoint, и кто будет писать, возможно, понадобится содержимое Вашего файла.
|
Отправлено: 11:02, 25-07-2013 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 4
|
Профиль | Отправить PM | Цитировать Из файла берется информация с 3-х расходомеров, это просто 3 значения допустим 1111;22222;33;
Они должны быть записаны в список SharePoint и отображены там, при этом раз в день, допустим в 12 часов они опять должны быть взяты из файла и заменены в SharePoint'е |
Отправлено: 13:18, 25-07-2013 | #3 |
Старожил Сообщения: 280
|
Профиль | Отправить PM | Цитировать Ну раз файлики давать не хочешь то лови как есть
![]() Структура CSV Незнаю нужно тебе или нет, но тут создание элементов из csv файла а тут обновление элементов, в качестве ID принимается значения из 1 столбца |
Отправлено: 18:33, 25-07-2013 | #4 |
Новый участник Сообщения: 4
|
Профиль | Отправить PM | Цитировать Попробовал сделать как вы говорите, но опять ошибки, ошибки, ошибки...
PS C:\Users\> $Information = Import-Csv "C:\1.csv" -Delimiter ';' [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint") $siteUrl = "http://doc.site.ru/production/" # Адрес сервера Sharepoint Services $webName = "/Lists/1/Allitemsg.aspx" #Имя узла $spSite = new-object Microsoft.SharePoint.SPSite($siteurl) $spWeb = $spSite.OpenWeb($webName) $listName = "Расход ДТ" #Имя списка $spList = $spWeb.Lists[$listName] $items=$spList.Items ForEach ($stroka in $Information ) { $NewItem = $spList.Items.add() $NewItem["Столбец1"] = $stroka.Столбец1 $NewItem["Столбец2"] = $stroka.Столбец2 $NewItem["Столбец3"] = $stroka.Столбец3 $NewItem.Update() } $Information = Import-Csv "C:\1.csv" -Delimiter ';' [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint") $siteUrl = "http://doc.site.ru/production/" # Адрес сервера Sharepoint Services $webName = "/Lists/1/Allitemsg.aspx" #Имя узла $spSite = new-object Microsoft.SharePoint.SPSite($siteurl) $spWeb = $spSite.OpenWeb($webName) $listName = "Расход ДТ" #Имя списка $spList = $spWeb.Lists[$listName] $items=$spList.Items ForEach ($stroka in $Information ) { ForEach ($item in $items ) { if($stroka.Столбец1 -eq $item["Столбец1"]){ if($item["Столбец2"] -eq $stroka.Столбец2 ){} else { $item["Столбец2"]= $stroka.Столбец2 $item.update() } if($item["Столбец3"] -eq $stroka.Столбец3 ){} else { $item["Столбец3"]= $stroka.Столбец3 $item.update() } } } } New-Object : Не удается найти тип [Microsoft.SharePoint.SPSite]: убедитесь в том, что сборка, содержащая этот тип, загруж ена. строка:5 знак:21 + $spSite = new-object <<<< Microsoft.SharePoint.SPSite($siteurl) + CategoryInfo : InvalidType: (:) [New-Object], PSArgumentException + FullyQualifiedErrorId : TypeNotFound,Microsoft.PowerShell.Commands.NewObjectCommand Нельзя вызвать метод для выражения со значением NULL. строка:6 знак:25 + $spWeb = $spSite.OpenWeb <<<< ($webName) + CategoryInfo : InvalidOperation: (OpenWeb:String) [], RuntimeException + FullyQualifiedErrorId : InvokeMethodOnNull Не удается индексировать в массив NULL. строка:8 знак:24 + $spList = $spWeb.Lists[ <<<< $listName] + CategoryInfo : InvalidOperation: (Расход ДТ:String) [], RuntimeException + FullyQualifiedErrorId : NullArray Нельзя вызвать метод для выражения со значением NULL. строка:11 знак:29 + $NewItem = $spList.Items.add <<<< () + CategoryInfo : InvalidOperation: (add:String) [], RuntimeException + FullyQualifiedErrorId : InvokeMethodOnNull Не удается индексировать в массив NULL. строка:12 знак:10 + $NewItem[ <<<< "Столбец1"] = $stroka.Столбец1 + CategoryInfo : InvalidOperation: (Столбец1:String) [], RuntimeException + FullyQualifiedErrorId : NullArray Не удается индексировать в массив NULL. строка:13 знак:10 + $NewItem[ <<<< "Столбец2"] = $stroka.Столбец2 + CategoryInfo : InvalidOperation: (Столбец2:String) [], RuntimeException + FullyQualifiedErrorId : NullArray Не удается индексировать в массив NULL. строка:14 знак:10 + $NewItem[ <<<< "Столбец3"] = $stroka.Столбец3 + CategoryInfo : InvalidOperation: (Столбец3:String) [], RuntimeException + FullyQualifiedErrorId : NullArray Нельзя вызвать метод для выражения со значением NULL. строка:15 знак:16 + $NewItem.Update <<<< () + CategoryInfo : InvalidOperation: (Update:String) [], RuntimeException + FullyQualifiedErrorId : InvokeMethodOnNull New-Object : Не удается найти тип [Microsoft.SharePoint.SPSite]: убедитесь в том, что сборка, содержащая этот тип, загруж ена. строка:22 знак:21 + $spSite = new-object <<<< Microsoft.SharePoint.SPSite($siteurl) + CategoryInfo : InvalidType: (:) [New-Object], PSArgumentException + FullyQualifiedErrorId : TypeNotFound,Microsoft.PowerShell.Commands.NewObjectCommand Нельзя вызвать метод для выражения со значением NULL. строка:23 знак:25 + $spWeb = $spSite.OpenWeb <<<< ($webName) + CategoryInfo : InvalidOperation: (OpenWeb:String) [], RuntimeException + FullyQualifiedErrorId : InvokeMethodOnNull Не удается индексировать в массив NULL. строка:25 знак:24 + $spList = $spWeb.Lists[ <<<< $listName] + CategoryInfo : InvalidOperation: (Расход ДТ:String) [], RuntimeException + FullyQualifiedErrorId : NullArray Не удается индексировать в массив NULL. строка:29 знак:41 + if($stroka.Столбец1 -eq $item[ <<<< "Столбец1"]){ + CategoryInfo : InvalidOperation: (Столбец1:String) [], RuntimeException + FullyQualifiedErrorId : NullArray + я так понимаю если в файле .csv находится всего 3 значения: 111;2222;3201 то их так и оставлять как строка1, строка2 или присвоить другое значение? Туго у меня пока с пониманием работы PowerShell Так же вопрос про $siteUrl = "http://doc.site.ru/production/" # Адрес сервера Sharepoint Services $webName = "/Lists/1/Allitemsg.aspx" #Имя узла Раздел где будет находится информация http://doc.site.ru/production/ А сам список, куда будет закачиваться информация находится по адресу http://doc.site.ru/production/Lists/1/Allitemsg.aspx |
|
Последний раз редактировалось iMakS27, 26-07-2013 в 02:56. Отправлено: 02:16, 26-07-2013 | #5 |
Старожил Сообщения: 280
|
Профиль | Отправить PM | Цитировать С этого и надо было начинать.
Цитата iMakS27:
Цитата iMakS27:
Цитата iMakS27:
Цитата Iska:
Имя узла - если у тебя ферма и там несколько сайтов то это будет имя этого сайта, вполне вероятно что это будет "production", но я незнаю твою структуру мб там будет пусто как и у меня. (это в случае если у тебя 1 сайт) Имя списка - Это имя которые ты указывал при создании это листа. Либо просто посмотри в свойствах списка (открывашь список, далее верху "Работа со списком"->"Параметры списка"->"Название, описание и переходы"->"Имя списка") У тебя это "1" И получаем Типа такого И в принципе ты сам можешь все проверить. На серевер SP, открой Powershell ISE и запусти, что покажет? |
||||
Отправлено: 09:29, 26-07-2013 | #6 |
Новый участник Сообщения: 4
|
Профиль | Отправить PM | Цитировать Файл, информацию с которого надо заносить в список SharePoint. Я понял свою ошибку, что сразу не прикрепил его.
Как изменится запрос, если файл будет иметь такой вид? 1.txt Сейчас нет возможности проверить что Вы, Molchune, мне написали, но заранее говорю спасибо, думаю что в этот раз все получится) В понедельник отпишусь как все прошло. Цитата:
Имя: Расход ДТ Но его веб адрес Веб-адрес: http://doc.site.ru/production/Lists/1/Allitemsg.aspx Это получается, что SharePoint сам присвоил ему имя "1"? И его и надо использовать? Просто если нажать на СПИСКИ справа, это там, где располагаются все созданные списки, будет вообще вот такой адрес http://doc.site.ru/production/_layou...spx?BaseType=0 |
|
Последний раз редактировалось iMakS27, 26-07-2013 в 10:14. Отправлено: 10:07, 26-07-2013 | #7 |
Старожил Сообщения: 280
|
Профиль | Отправить PM | Цитировать Имя списка задается при создании списка, если в последствии оно не менялось, то оно совпадает с тем что я написал(DisplayName=Name)., Если менялось то изначальное имя остается как и было при создании, а то что в свойствах это уже DisplayName.
Также если тебе нужно именно синхронизация, то в этом файле не хватает ID. Так как без него ничего не получится. Либо раз в день удалять все значения в листе и заново заполнять из файла. Цитата iMakS27:
$stroka.Столбец3 = $stroka - это твоя строка в файле, Столбец3 - это имя твоего столбца (у тебя, это одно из значений в первой строке "дата", "расходомер 1", "расходомер 2", "расходомер 3") Еще раз повторюсь у тебя нет ID в файлике. Без него обновление будет.. но зачастую не того чего будешь ожидать. И в принципе наверное уже проще в личку переписываться. |
|
Отправлено: 11:25, 26-07-2013 | #8 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Прочие БД - Корпоративный портал на базе Microsoft SharePoint Foundation 2010 | ДЕ-Поинт | Программирование и базы данных | 0 | 21-05-2013 15:49 | |
CMD/BAT - [решено] Чтение определённых строк из файла | 4zz | Скриптовые языки администрирования Windows | 9 | 25-03-2013 22:26 | |
C/C++ - Чтение из бинарного файла формата GRD | Violetta_ | Программирование и базы данных | 3 | 20-05-2012 19:45 | |
CMD/BAT - [решено] Запись и чтение конфигурации из файла | alexusankov | Скриптовые языки администрирования Windows | 9 | 28-12-2010 15:14 | |
CMD/BAT - [решено] Чтение строки из файла в переменную | Николя | Скриптовые языки администрирования Windows | 42 | 17-01-2010 19:42 |
|