Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - Чтение информации из файла и передача ее на портал SharePoint

Ответить
Настройки темы
PowerShell - Чтение информации из файла и передача ее на портал SharePoint

Новый участник


Сообщения: 4
Благодарности: 0

Профиль | Отправить PM | Цитировать


Добрый день!
Возникла потребность в считывании информации с файла, 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();

}
Подскажите, как оформить запрос к файлу, и при этом была синхронизация данных с SharePoint.

Отправлено: 10:24, 25-07-2013

 

Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Если б у меня был SharePoint… Но у меня и Вашего «файла, txt или csv» нет. А вот тому, у кого есть SharePoint, и кто будет писать, возможно, понадобится содержимое Вашего файла.

Отправлено: 11:02, 25-07-2013 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 4
Благодарности: 0

Профиль | Отправить PM | Цитировать


Из файла берется информация с 3-х расходомеров, это просто 3 значения допустим 1111;22222;33;
Они должны быть записаны в список SharePoint и отображены там, при этом раз в день, допустим в 12 часов они опять должны быть взяты из файла и заменены в SharePoint'е

Отправлено: 13:18, 25-07-2013 | #3


Старожил


Сообщения: 280
Благодарности: 72

Профиль | Отправить PM | Цитировать


Ну раз файлики давать не хочешь то лови как есть
Структура CSV
читать дальше »
Код: Выделить весь код
Столбец1;Столбец2;Столбец3
1111;22222;33
1sdf3;2232;33sdf
1131;2232;33sdf
14111;34342222;3234234

Незнаю нужно тебе или нет, но тут создание элементов из csv файла
читать дальше »
Код: Выделить весь код
 $Information  = Import-Csv "C:\1.csv" -Delimiter ';'
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")
$siteUrl = "http://test" # Адрес сервера Sharepoint Services
$webName = "/"  #Имя узла
$spSite = new-object Microsoft.SharePoint.SPSite($siteurl) 
$spWeb = $spSite.OpenWeb($webName) 
$listName = "test" #Имя списка
$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()
}


а тут обновление элементов, в качестве ID принимается значения из 1 столбца
читать дальше »
Код: Выделить весь код
 $Information  = Import-Csv "C:\1.csv" -Delimiter ';'
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")
$siteUrl = "http://test" # Адрес сервера Sharepoint Services
$webName = "/"  #Имя узла
$spSite = new-object Microsoft.SharePoint.SPSite($siteurl) 
$spWeb = $spSite.OpenWeb($webName) 
$listName = "test" #Имя списка
$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()
               }        
            }
    }
}

Отправлено: 18:33, 25-07-2013 | #4


Новый участник


Сообщения: 4
Благодарности: 0

Профиль | Отправить 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
Мне сказали, что надо скачать дополнение под названием PSRemoting, но найти в свободном доступе не получилось...
+ я так понимаю если в файле .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
Раздел где будет находится информация 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
Благодарности: 72

Профиль | Отправить PM | Цитировать


С этого и надо было начинать.
Цитата iMakS27:
Адрес сервера и имя узла - что и куда вписывать, если допустим адрес самого портала http://doc.site.ru
Раздел где будет находится информация http://doc.site.ru/production/
А сам список, куда будет закачиваться информация находится по адресу http://doc.site.ru/production/Lists/1/Allitemsg.aspx »
По поводу
Цитата iMakS27:
Мне сказали, что надо скачать дополнение под названием PSRemoting »
ничего не надо, надо скрипт запускать на сервере Powershell.

Цитата iMakS27:
я так понимаю если в файле .csv находится всего 3 значения: 111;2222;3201 то их так и оставлять как строка1, строка2 или присвоить другое значение? »
На это ответ был в предыдущем посте...
Цитата Iska:
Если б у меня был SharePoint… Но у меня и Вашего «файла, txt или csv» нет. А вот тому, у кого есть SharePoint, и кто будет писать, возможно, понадобится содержимое Вашего файла. »
Адрес сервера Sharepoint Services - dns имя сайта, у тебя http://doc.site.ru
Имя узла - если у тебя ферма и там несколько сайтов то это будет имя этого сайта, вполне вероятно что это будет "production", но я незнаю твою структуру мб там будет пусто как и у меня. (это в случае если у тебя 1 сайт)
Имя списка - Это имя которые ты указывал при создании это листа. Либо просто посмотри в свойствах списка (открывашь список, далее верху "Работа со списком"->"Параметры списка"->"Название, описание и переходы"->"Имя списка") У тебя это "1"
И получаем
Типа такого
читать дальше »

Код: Выделить весь код
$siteUrl = "http://doc.site.ru" # Адрес сервера Sharepoint Services
$webName = "/production"  #Имя узла
$listName = "1" #Имя списка

И в принципе ты сам можешь все проверить. На серевер SP, открой Powershell ISE и запусти, что покажет?
читать дальше »

Код: Выделить весь код
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")
$siteUrl = "http://doc.site.ru" # Адрес сервера Sharepoint Services
$webName = "/production"  #Имя узла
$spSite = new-object Microsoft.SharePoint.SPSite($siteurl) 
$spWeb = $spSite.OpenWeb($webName) 
$listName = "1" #Имя списка
$spList = $spWeb.Lists[$listName]
$items=$spList.Items
$items

Отправлено: 09:29, 26-07-2013 | #6


Новый участник


Сообщения: 4
Благодарности: 0

Профиль | Отправить PM | Цитировать



Файл, информацию с которого надо заносить в список SharePoint. Я понял свою ошибку, что сразу не прикрепил его.
Как изменится запрос, если файл будет иметь такой вид?
1.txt

Сейчас нет возможности проверить что Вы, Molchune, мне написали, но заранее говорю спасибо, думаю что в этот раз все получится)
В понедельник отпишусь как все прошло.

Цитата:
Имя списка - Это имя которые ты указывал при создании это листа. Либо просто посмотри в свойствах списка (открывашь список, далее верху "Работа со списком"->"Параметры списка"->"Название, описание и переходы"->"Имя списка") У тебя это "1"
Если так открыть, то я вижу такую информацию, название списка "Расход ДТ"
Имя: Расход ДТ
Но его веб адрес
Веб-адрес: 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
Благодарности: 72

Профиль | Отправить PM | Цитировать


Имя списка задается при создании списка, если в последствии оно не менялось, то оно совпадает с тем что я написал(DisplayName=Name)., Если менялось то изначальное имя остается как и было при создании, а то что в свойствах это уже DisplayName.
Также если тебе нужно именно синхронизация, то в этом файле не хватает ID. Так как без него ничего не получится. Либо раз в день удалять все значения в листе и заново заполнять из файла.
Цитата iMakS27:
Как изменится запрос, если файл будет иметь такой вид? »
$item["Столбец2"] = $item считай что это элемент в листе, а ["Столбец2"] - это название свойства(имя столбца, в таблице)
$stroka.Столбец3 = $stroka - это твоя строка в файле, Столбец3 - это имя твоего столбца (у тебя, это одно из значений в первой строке "дата", "расходомер 1", "расходомер 2", "расходомер 3")

Еще раз повторюсь у тебя нет ID в файлике. Без него обновление будет.. но зачастую не того чего будешь ожидать.
И в принципе наверное уже проще в личку переписываться.

Отправлено: 11:25, 26-07-2013 | #8



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - Чтение информации из файла и передача ее на портал SharePoint

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Прочие БД - Корпоративный портал на базе 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




 
Переход