Exchange Server 2013 – High Resolution Photo. Их много.


Стал разбираться в нюансах интеграции Exchange Server 2013, Sharepoint и Lync, в частности с High Resolution Photo и обнаружил интересный факт. Как известно Exchange 2013 используется всеми этими приложениями как хранилище.

Как думаете сколько фотографий для каждого пользователя хранится в его почтовом ящике? Читать далее

Миграция лесов и Sharepoint 2010. Часть 2.


В статье Миграция лесов и Sharepoint 2010 описана суть вопроса: миграция из двух лесов в один новый. Здесь я просто привожу доработанный скрипт, который можно использовать при миграции пользователей изо дня в день. Скрипт сохраняет в файле список уже обработанных учетных записей и при последующей итерации не выполняет их повторную обработку. Это сильно снижает время работы скрипта. Если вы мигрируете сотни учетных записей в день, то заметите ощутимую экономию времени.

 

Import-Module Activedirectory

 

$cmdpath=«C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\BIN\»

$cmd = $cmdpath+«stsadm.exe»

 

$dserver = «dc0.TOdomain.ru»

$list=Get-ADUser -Filter * -SearchBase «OU=Deps,DC=TOdomain,DC=ru» -Server $dserver | select -ExpandProperty SamAccountName

 

 

$listold = Get-Content c:\install\list-old.txt

$list0 = $list | ? {$listold -notcontains $_ }

 

 

$dserver = «dc.FROMdomain1.ru»

$list1=$list0 | ? { Get-ADUser -Filter {samaccountname -eq $_} -SearchBase «DC=FROMdomain1,DC=ru» -Server $dserver }

 

$dserver = «dc.FROMdomain2.ru»

$list2=$list0 | % { Get-ADUser -Filter {samaccountname -eq $_} -SearchBase «DC=FROMdomain2,DC=ru» -Server $dserver } | select -ExpandProperty SamAccountName

 

$listconflict = $list1 | ? {$list2 -contains $_ }

 

$list11 = $list1 | ? { $listconflict -notcontains $_ }

$list22 = $list2 | ? { $listconflict -notcontains $_ }

 

 

$list11 | % { & $cmd -o migrateuser -oldlogin FROMdomain1\$($_) -newlogin TOdomain\$($_) -ignoresidhistory }

$list22 | % { & $cmd -o migrateuser -oldlogin FROMdomain2\$($_) -newlogin TOdomain\$($_) -ignoresidhistory }

 

$list11 | Out-File -FilePath c:\install\list-old.txt -Append

$list22 | Out-File -FilePath c:\install\list-old.txt -Append

 

Миграция лесов и Sharepoint 2010


(Продолжение Миграция лесов и Sharepoint 2010. Часть 2.)

При миграции из одного леса в другой традиционно используется ADMT Active Directory Migration Toolkit. Этот инструмент позволяет мигрировать не только учетные записи пользователей, но и компьютеры и профили пользователей. Вот только он не мигрирует приложения. Поэтому для каждого приложения надо найти свой путь миграции. Такие инструменты есть, например, для Exchange Server. А вот как быть с Sharepoint? Если пользователю дали права на какие-то ресурсы в Sharepoint, то после миграции он теряет к ним доступ.  А если на пользователя в Sharepoint назначены права на десятки сайтов, сотни библиотек, то как быть? Назначать права заново каждому пользователю (а их может быть несколько тысяч)? Это же десятки и сотни тысяч операций – очень трудоемко!

Читать далее

Sharepoint 2010 – проверка вводимых данных.


Мне, как человеку, который не так уж часто создает какие-то решения на Sharepoint, приятно делать некоторые открытия на этом поприще.

Вот на днях собирал приложение для учета служебных телефонных номеров (возможно позже опишу создание этого чрезвычайно полезного приложения) и обнаружил достаточно удобный способ контроля вводимых значений.

Читать далее

Совместимость скриптов Powershell V3 и Powershell V2


 

После появления Windows Management Framework 3.0, который включает в себя Powershell V3, многие скорее всего уже поставили его на свои компьютеры и начали использовать новые возможности. А с выходом Windows Server 2012 RTM установка WMF 3.0 на более ранние версии ОС стала еще более актуальной, т.к. новый Server Manager позволяет управлять удаленными системами только при наличии на них WMF 3.0.

На днях столкнулся с проблемой: после установки WMF 3.0 на сервер с Sharepoint Server 2010 перестал работать скрипт, который я описывал с статье  Sharepoint – пусть бегут неуклюжи. Причину рассказал сам скрипт:

Get-SPWeb : Microsoft SharePoint is not supported with version 4.0.30319.269 of the Microsoft .Net Runtime.

 

Действительно Sharepoint Server 2010 работает исключительно на .Net Framework 2.0 и Powershell 2.0.

С счастью удалять WMF 3.0 не пришлось. Решение простое: в Диспетчере задач открываем параметры задачи, которая запускает наш скрипт, и в параметрах запуска Powershell.exe указываем параметр Version 2.

>Powershell.exe   –Version 2

После этого скрипт работает!

К сведению.

Установка .Net Framework 4.0, WMF 3.0 и Powershell V3 не удаляет Powershell V2: прежний движок сохраняется для обратной совместимости скриптов. (Как сказано где-то в блоге разработчиков: совместимость почти полная).

Дело в том, что скрипты Powershell V2 откомпилированы на CLR 2.0, скрипты Powershell V3 на CLR 3.0, и, таким образом, они абсолютно не совместимы на бинарном уровне. Указание параметра –Version 2 позволяет нам запустить выполнение скрипта в правильной версии Powershell.

Sharepoint 2010 Копирование или перемещение документов с помощью Powershell


 

Все чаще приходится что-то «ковырять» на Sharepoint 2010 с помощью Powershell. Открыл для себя, что API в Sharepoint очень забавное. Например, копирование или перемещение документа из одной библиотеки в другую не так уж и тривиально и имеет массу подводных камней.

Вот несколько источников проливающих свет на это безобразие.

Копирование это не копирование элемента, а файла! Более того если есть папки в библиотеке, то надо копировать папку или даже делать рекурсию по подпапкам.

http://social.technet.microsoft.com/Forums/en-AU/sharepoint2010programming/thread/35afce1e-065c-4f31-bca8-3cc615fbdd9f

Либо использовать экспорт-импорт. http://blogs.msdn.com/b/jorman/archive/2011/01/08/copying-lists-with-powershell-in-sharepoint-2010.aspx

Еще один пример кода с ограниченными возможностями. http://www.learningsharepoint.com/2010/07/04/programmatically-copy-and-move-documents-in-sharepoint-2010/

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

Если у вас publishing site, то число видимых элементов будет меньше программного счетчика, т.к. draft элементы могут быть не видны!

Обсуждение на форуме http://social.technet.microsoft.com/Forums/ru-RU/winserverpowershell/thread/a70b30d0-b20b-48a6-b98d-9fa47a95c5ed

Sharepoint – пусть бегут неуклюжи


Да это слова из хорошо известной песенке о дне рождения и о том, что такой день только раз в году. Только речь у нас не о дне рождения Sharepoint 2010, а о том, что не так уж редко в компаниях размещают на корпоративном сайте список именинников или даже персональное поздравление с днем рождения. Персональную страничку можно написать и легко разместить на сайте Sharepoint, а вот как быть со списком именинников, скажем, на текущей неделе?

В Sharepoint нет стандартной Web-части, которая отображала бы список именинников. Разработка собственной Web-части требует затрат времени и сил. Для тех, кто пишет код  для Sharepoint каждый день это не проблема. А как быть остальным?

Читать далее