Интеграция Powershell + SharePoint

Posted: 27.04.2015 in Разработка, Powershell, SharePoint
Метки:, ,

iLoveSharepoint Power Webpart для Sharepoint 2010 позволяет вставлять скрипты на Powershell прямо в страницы портала.

Так как за powershell-ом лежит практически весь .NET(и не только), то это позволяет создавать интересные решения, без открытия студии и развёртывания wsp.

Для иллюстрации создадим какую-нибудь функцию на Powershell, к примеру будем приветствовать юзера в зависимости от времени суток. Имя текущего пользователя выведем в дружественном формате.

# подключим SharePoint безопасным образом
$sharePointSnapin = Get-PSSnapin | Where-Object { $_.Name -eq  "Microsoft.SharePoint.PowerShell"}
if($sharePointSnapin -eq $null)
{
    Add-PSSnapin Microsoft.SharePoint.PowerShell    
}


# поздороваемся с пользователем, в зависимости от времени суток
Function GetGreeting()
{
    # текущее время
    $actualtime = (Get-Date).TimeOfDay;

    # выберем интервал
    $evening = New-TimeSpan -Hours 17 -Minutes 30 -Seconds 0
    $morning = New-TimeSpan -Hours 8 -Minutes 0 -Seconds 0
    $dinner = New-TimeSpan -Hours 11 -Minutes 0 -Seconds 0
    $night = New-TimeSpan -Hours 22 -Minutes 0 -Seconds 0
    
    if ($actualtime -ge $morning -and $actualtime -le $dinner)
    {
        return "Доброе утро";
    }
    if ($actualtime -ge $dinner -and $actualtime -le $evening)
    {
        return "Добрый день";
    }
    if ($actualtime -ge $evening -and $actualtime -le  $night)
    {
        return "Добрый вечер";
    }
    if ($actualtime -ge  $night -or $actualtime -le  $morning)
    {   
	    # дикий случай, но допустим
        return "Доброй ночи :)";
    }
}


# для получения Display Name можно каждый раз делать запрос к домен-контроллеру, 
# но так как формат имени в домене имеет стандартный вид "Домен\Имя.Фамилия",
# то выведем friendly-имя прямо тут же в вебчасти
Function GetDisplayName($name)
{
    if($name -match "\\")
    {
        $name = $name.remove(0, $name.LastIndexOf('\')+1);
    }
    if($name -match ".")
    {
        $name = $name.replace("."," ");
    }
           
    return $name
}

# соберём всё вместе
$hello = (GetGreeting)+ ", " + (GetDisplayName -name ([Environment]::UserName))


# вывод html
function Render($writer)
{
    $writer.Write("<h1>$hello</h1>")
}

Результат работы такого кода:

image

Таким образом мы получаем динамическое поведение в Sharepoint, но без создания «полновесного» решения с кодом

Реклама
- комментарии
  1. mitay:

    Здравствуйте. Можете пояснить куда этот код вставлять?
    Желательно по шагам, для чайников. Спасибо!

  2. Добрый день!

    Покурите документацию к «Power Webpart 2010»:
    https://ilovesharepoint.codeplex.com/

    Вам нужно развернуть солюшн и потом добавить вебчасть на страницу, и в ней код
    http://www.ilovesharepoint.com/2009/04/getting-started-with-sharepoint.html
    https://www.google.ru/search?q=PowerWebPart&oq=PowerWebPart&aqs=chrome..69i57.242j0j7&sourceid=chrome&ie=UTF-8

    но учтите что это для 2010, и в 2013 не будет поддерживаться

    С уважением, Геннадий

  3. mitay:

    Спасибо! Документации к 2010 нет — «Documentation soon…»
    Геттинг-старт по 3.0 и он в виде скринкаста, который удален.
    То что гуглится тоже по 3.0, там совершенно другой интерфейс, в 2010 не могу найти ничего подобного.
    ILoveSharePoint.WebPart2010.wsp развернул, на всю ферму, но на сайте ничего не изменилось, в списке веб-частей она не появилась.
    Готов курить матчасть, но не знаю с какого боку подступиться, гугл не помог, прошу ткнуть носом.

    • >>но на сайте ничего не изменилось, в списке веб-частей она не появилась

      надо не только развернуть солюшн но и активировать фичу/фичи. Также то-ли в настройках сайт-коллекции то-ли в админке — появится пункт настройки от этих Power web parts, и там кажется надо что-то «подписать». Потом насколько помню можно добавлять код на страницы.

      Настройки ресиверов — появляются в настройках списка

      • mitay:

        Установил в песочнице — все получилось.
        На доставшемся в наследство SPF при изменении веб-части настройки iLoveSharePoint не видны, только стандартные вид, макет и пр. Под администратором. Можете что-то посоветовать? Есть способ понять почему нет настроек Script?

      • >>в песочнице — все получилось.
        >> На доставшемся в наследство SPF .. не видны
        >>Можете что-то посоветовать?

        Как вариант — поставить UlsViewer и смотреть в логи ULS, например что за ошибки при активации/деактивации. Ну и стандартный eventvwr.exe никто не отменял.

        Ну и не делать на продакшн серверах то в чём вы не уверены)

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s