none
PowerShell+WSS3.0 need help... RRS feed

  • Вопрос

  • Приветсвтую всех!
    Нужна помощь в написании скрипта для Sharepoint с помощью PowerShell. Суть в следущем:

    В листе имеется поле "дата", нужно  пробегать по этому полю в листе с датами и сравнивать с сегодняшней датой, элементов порядка 100 -150 соответственно . Если дата каждого из элементов равна или меньше сегодняшней даты, высылать письмо с уведомлением. РП проделывает подобную процедуру только для одного элемента, для всего списка элементов как сделать пока не соображу.

    Я вот начал писать скрипт , может кто поможет из спецов?? Буду очень признателен...

    $env:SPpath = "${env:CommonProgramFiles}\Microsoft Shared\web server extensions\12\"
    [System.Reflection.Assembly]::LoadFrom("$env:SPpath\ISAPI\Microsoft.SharePoint.dll");
    
    $SpSite = New-Object -TypeName "Microsoft.SharePoint.SPSite" -ArgumentList "http://localhost";
    $SpWeb=$SpSite.OpenWeb();
    $Splist=$SpWeb.GetList("http://sps_test/Lists/VM/AllItems.aspx");
    $SpData=Get-Date;
    #Далее нужно сравнить переменную "$SpData" с элементами поля "Time", и если значение элемента неравно текущей дате выслать сообщение или запустить Workflow для этого элемента

Все ответы

  • foreach ($Item in $SpList.Items)
    {
     if ($SpData -ge $Item["WorkPhone"])
     {
       что то делаем
     }
    }


    AKA Xaegr, MCSE: Security, Messaging; MCITP: Server\Enterprise Administrator; Блог: http://xaegr.wordpress.com
    Модератор
  • а Как выделить цветом элемент который не соответствует заданному условию?

     

     

  • Write-Host -ForegroundColor red "Ку!"
    Сазонов Илья http://www.itcommunity.ru/blogs/sie-wl/
    Модератор

  • c этим ясно выводится на экран КУ красного цвета 

    нужно чтобы при переборе foreach  тот элемент у которого значение меньше сегодняшней даты окрашивалось красным цветом в этом элементе или возможно

    появлялась какая та индикация?

    foreach ($Item in $SpList.Items)
    {
    if ($SpData -ge $Item["Time"])
    {
    $Item["Time"] окрашивался другим цветом
    }
    }
  • foreach ($Item in $SpList.Items)

    {
    if ($SpData -ge $Item["Time"])
    {
    Write-Host -ForegroundColor red $Item["Time"]
    } else

    {

     Write-Host $Item["Time"]

    }

    }
    Сазонов Илья http://www.itcommunity.ru/blogs/sie-wl/
    Модератор
  • Спасибо, Илья...выполняется

    единственное что я не понял как это должно отображаться в листе Sharepoint

  • Опишите задачу подробнее:  не понятно при чем тут у вас лист Sharepoint.
    Сазонов Илья http://www.itcommunity.ru/blogs/sie-wl/
    Модератор
  • Если вы хотите выделить элементы списка в SharePoint, лучше восспользоваться например таким решением - http://blogs.msdn.com/b/sharepointdesigner/archive/2008/02/25/filtering-and-formatting-with-date-values.aspx


    AKA Xaegr, MCSE: Security, Messaging; MCITP: Server\Enterprise Administrator; Блог: http://xaegr.wordpress.com
    Модератор
  • Василий, спасибо за наводку

    результат мненужен примерно такой, но не понятно как это привязать к моему скрипту на powershell

     

  • Не люблю говорить такое... :) Но PowerShell в данном случае не нужен, совсем.


    AKA Xaegr, MCSE: Security, Messaging; MCITP: Server\Enterprise Administrator; Блог: http://xaegr.wordpress.com
    Модератор
  • Опишите задачу подробнее:  не понятно при чем тут у вас лист Sharepoint.
    Сазонов Илья http://www.itcommunity.ru/blogs/sie-wl/


    Скрипт который я пытаюсь реализовать предназначен для Листа на Sharepoint. Сначала я пытался это реализовать с помощью Workflow, но безуспешно. Я у себя активировал фичу ILoveSharepoint и с помощью ее хочу натравить PowerShell на свой Sharepoint List. Поэтому мне нужно не просто выводить в транслятор Write-Host , а произвести изменения в Листе.

    $env:SPpath = "${env:CommonProgramFiles}\Microsoft Shared\web server extensions\12\"
    [System.Reflection.Assembly]::LoadFrom("$env:SPpath\ISAPI\Microsoft.SharePoint.dll");
    
    $SpSite = New-Object -TypeName "Microsoft.SharePoint.SPSite" -ArgumentList "http://localhost";
    $SpWeb=$SpSite.OpenWeb();
    $Splist=$SpWeb.GetList("http://sps_test/Lists/VM/AllItems.aspx");
    $SpData=Get-Date;
    foreach ($Item in $SpList.Items)
    
    {
    if ($SpData -ge $Item["Time"])
    {
    Write-Host -ForegroundColor red $Item["Time"]
    } else
    
    {
    
     Write-Host $Item["Time"]
    
    }
    }

    Я так понимаю Write-Host нужно заменить на чтото типа "перезаписать данные $Item[Time]"

    P>S подскажите куда копать?

  • У вас две задачи: 1. Рассылка уведомлений - решается скриптом 2. Отображение на вэб-странице - решается через SPD как вам показал Василий Гусев
    Сазонов Илья http://www.itcommunity.ru/blogs/sie-wl/
    Модератор