2010-10-07 20 views
1

我正在開發一個用於部署SharePoint項目的自動化腳本。我正在使用創建站點時必須應用的沙箱級web模板。我遇到了很多麻煩,因爲它似乎像共享點緩存webtemplates列表和get-spwebtemplate doens't找不到新的。我把它的工作方式是這樣的:將自定義web模板應用於sitecollection適用於powershell ise而不是powershell控制檯

[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'或它的一個依賴關係。系統找不到指定的文件 。 在C:\構建\ SharePointBuild.p S1:318字符:37 + $ site.OpenWeb()ApplyWebTemplate < < < <($ web_template_name) + CategoryInfo:NotSpecified:(:) [],ParentContainsErrorRecordE xception + FullyQualifiedErrorId:DotNetMethodException

在sitecollection中安裝Web模板沙箱解決方案時,程序集在GAC中完美註冊。

任何想法?謝謝!

回答

1

有沒有可能運行64位ISE和32位PowerShell控制檯(反之亦然)?如果不是這樣,則另一個區別是ISE以COM STA模式運行,而PowerShell控制檯默認運行在MTA中。如果SharePoint在封面下使用COM(我認爲它的確如此),這隻會很重要。您可以通過在STA模式,像這樣運行PowerShell控制檯驗證這一點:

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

假設你在PowerShell的2.0開始處理cmdlet的。

+0

感謝您的回覆!既然我有64和x86 powershell可執行文件,我認爲它們都在64位上工作。打開powershell時,我嘗試了-sta參數,它無法工作。但是,我會嘗試你的方式 – ivos 2010-10-07 17:44:13

+0

...並且它不起作用:( – ivos 2010-10-07 18:01:08

+0

在這種情況下,您可以嘗試使用Windows SDK中的工具fuslogvw.exe它將顯示有關程序集加載失敗的更多信息。幫助您瞭解如何使用此工具的主題:http://msdn.microsoft.com/en-us/library/e74a18c4%28VS.71%29.aspx – 2010-10-07 19:54:01

相關問題