将自定义Web模板应用于网站集可以在powershell ise上运行,而不是在PowerShell控制台上运行

时间:2010-10-07 17:30:15

标签: sharepoint powershell powershell-ise

我正在开发一个用于部署sharepoint项目的自动脚本。我正在使用沙箱级webtemplate,必须在创建de site时应用。我有很多麻烦,因为看起来像sharepoint缓存webtemplates列表和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()

正如您所看到的,我正在使用.net sharepoint api而不是cmdlet。这在PowerShell ISE中很有用,但在PowerShell控制台中,它会抛出有关引用的DLL的异常:

使用“1”参数调用“ApplyWebTemplate”的异常:“无法加载文件  或程序集'XXX.SharePoint.Common,Version = 1.0.0.0,Culture = neutral,PublicK eyToken = 534c125b45123456'或其依赖项之一。系统找不到了 e文件指定。“ 在C:\ Build \ SharePointBuild.p s1:318 char:37 + $ site.OpenWeb()。ApplyWebTemplate<<<< ($ web_template_name)     + CategoryInfo:NotSpecified:(:) [],ParentContainsErrorRecordE    xception     + FullyQualifiedErrorId:DotNetMethodException

在sitecollection中安装Web模板沙盒解决方案时,程序集在GAC中完美注册。

有什么想法吗?谢谢!

1 个答案:

答案 0 :(得分:1)

您是否有可能运行64位ISE和32位PowerShell控制台(反之亦然)?如果不是那么另一个区别是ISE在COM STA模式下运行,而PowerShell控制台默认在MTA中运行。这只有在SharePoint使用COM(我认为它)的情况下才有意义。您可以通过在STA模式下运行PowerShell控制台来验证这一点,如下所示:

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

假设您使用的是PowerShell 2.0 for Start-Process cmdlet。