Применение пользовательского веб-шаблона к коллекции сайтов работает на powershell ise, а не на консоли powershell - PullRequest
1 голос
/ 07 октября 2010

Я работаю над автоматическим сценарием для развертывания проектов sharepoint.Я использую веб-шаблон уровня песочницы, который должен применяться при создании сайта.У меня было много проблем с этим, потому что кажется, что sharepoint кеширует список веб-шаблонов, а get-spwebtemplate не находит новый добавленный.Вот как я это сделал:

[system.reflection.assembly]::LoadWithPartialName("Microsoft.Sharepoint")
$site= new-Object Microsoft.SharePoint.SPSite($web_application_complete_url)
$site.OpenWeb().ApplyWebTemplate($web_template_name)
$site.Dispose()

Как видите, я использую api .net sharepoint вместо командлетов.Это хорошо работает в PowerShell ISE, но в консоли PowerShell выдает исключение, относящееся к указанной DLL:

Исключение, вызывающее «ApplyWebTemplate» с аргументом «1»: «Не удалось загрузить файл или сборку» XXX.SharePoint.Common, версия = 1.0.0.0, культура = нейтральная, PublicK eyToken = 534c125b45123456 'или одна из ее зависимостей. Система не может найти указанный файл. "В C: \ Build \ SharePointBuild.p s1: 318 char: 37 + $ site.OpenWeb (). ApplyWebTemplate <<<< ($ web_template_name) + CategoryInfo: NotSpecified: (:) [], ParentContainsErrorRecordE xception + FullyQualifiedErrorId: DotNet1006 * <p>Сборка отлично регистрируется в GAC при установке решения для песочницы веб-шаблона в коллекцию сайта.

Есть идеи?спасибо!

1 Ответ

1 голос
/ 07 октября 2010

Есть ли вероятность того, что вы используете 64-разрядную консоль ISE и 32-разрядную консоль PowerShell (или наоборот)? Если это не так, то другим отличием является то, что ISE работает в режиме COM STA, а консоль PowerShell по умолчанию работает в MTA. Это будет иметь значение только в том случае, если SharePoint использует COM под прикрытием (что я думаю, что это делает). Вы можете убедиться в этом, запустив PowerShell Console в режиме STA следующим образом:

C:\> Start-Process PowerShell -arg -sta

Предполагается, что вы используете PowerShell 2.0 для командлета Start-Process.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...