Команды и скрипты (PowerShell)

 Комментарии можно оставлять "здесь"

Рассмотрим команды, которые могут быть полезны для администрировании и управления данными SharePoint через PowerShell.

Если Вы запускаете не "Командную консоль SharePoint", а запускаете используете просто PowerShell, то перед выполнением команд необходимо зарегистрировать оснастку SharePoint:
              Add-PSSnapin Microsoft.Sharepoint.Powershell

Чтобы подключиться к необходимому сайту используйте команду:
              $web = Get-SPWeb http://serverurl/.../

Если нужен список, то выполняем команду:
              $list = $web.Lists[‘Название списка]

Выберем отдельный элемент списка: 
              $item = $list.GetItems()[индекс элемента]
или
              $item = $list.Items[индекс элемента]
или 
              $item = $list.GetItemById(id элемента)

Все элементы можно перебрать следующим способом
             foreach ($item in $list.GetItems())
             {
                  $item[‘Title’]
             }



Можно отфильтровать количество элементов с помощью представления:
             $view = $list.Views['filter'или $view = $list.Views[индекс]; 
             foreach ($item in $list.GetItems($view))
             {
                  $item[‘Title’]
             }

Также можно отредактировать и CAML запрос самого представления:
           $view = $list.Views[‘Мои задачи’]
           $view.Query = “<Where><And><Eq><FieldRef Name='AssignedTo' /><Value Type='Integer'><UserID /></Value></Eq><Neq><FieldRef Name='Status' /><Value Type='Text'>Завершенные</Value></Neq></And></Where> <OrderBy><FieldRef Name='Status' /> <FieldRef Name='Priority' /> </OrderBy>”
            $view.Update()


Команда добавления решения в ферму:
          Add-PSSnapin Microsoft.Sharepoint.Powershell
          Add-SPSolution ‘C:\DEV\-----.wsp’

Если необходимо перевести семейство в режим только для чтения, а также вывести его из этого режима, то используем
        stsadm -o setsitelock -url http://... -lock none
        stsadm -o setsitelock -url http://... -lock readonly
Чтобы проверить текущее состояние:
        stsadm -o getsitelock -url http://rts
Результат возможен в следующем виде: 
<SiteLock Lock="readonly" /> или <SiteLock Lock="none" />


Далее начну приводить примеры готовых небольших скриптов (переменные некоторые явно не определяю):

1. Поиск элементов, где не был запущен (в т.ч. не отработал) ни один рабочий процесс
$list = $web.Lists[‘Картотека’]
$i=1;
foreach($item in ($list.GetItems() | where { $_.Workflows.Count -eq 0})){
       $i.ToString() + “ ”+ $item.Name+ “ ”+ $item.ID;
       $i++;
}

2. Удаление разрешений у элемента списка 
Foreach ($item in $list.GetItems())
{
$item.BreakRoleInheritance($true)
if ($item['fieldNameInternal'].ToString() -eq 'value')
{
for ($j = $item.RoleAssignments.Count - 1; $j -ge 0; $j--)
  {
  $item.RoleAssignments.Remove($j);
}
'   ok'
}
else
{
'   skip' } }


3. Поиск зависших рабочих процессов в списке
foreach($item in $list.Items){ foreach($wf in $item.Workflows | where {$_.InternalState -ne "Completed"}) {  $wf.InternalState.ToString()+" "+$item.Name + " "+ $item["Modified"];​ } }​

 Комментарии можно оставлять "здесь"


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

Яндекс.Метрика