1

私は、SharePoint プロジェクトを展開するための自動化されたスクリプトに取り組んでいます。サイトの作成時に適用する必要があるサンドボックス レベルの Web テンプレートを使用しています。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 を使用しています。これは PowerShell ISE では問題なく機能しますが、PowerShell コンソールでは、参照されている DLL に関して例外がスローされます。

"1" 個の引数を指定して "ApplyWebTemplate" を呼び出し中に例外が発生しました: "ファイルまたはアセンブリ 'XXX.SharePoint.Common, Version=1.0.0.0, Culture=neutral, PublicKeyToken=534c125b45123456' またはその依存関係の 1 つを読み込めませんでした。指定されたファイルが見つかりません。」C:\Build\SharePointBuild.p s1:318 char:37 + $site.OpenWeb().ApplyWebTemplate <<<< ($web_template_name) + CategoryInfo : NotSpecified: (:) []、ParentContainsErrorRecordE xception + FullyQualifiedErrorId : DotNetMethodException

Web テンプレート サンドボックス ソリューションをサイト コレクションにインストールすると、アセンブリは GAC に完全に登録されます。

何か案は?ありがとう!

4

1 に答える 1

1

64 ビット ISE と 32 ビット PowerShell コンソール (またはその逆) を実行している可能性はありますか? そうでない場合、もう 1 つの違いは、ISE が COM STA モードで実行されるのに対し、PowerShell コンソールはデフォルトで MTA で実行されることです。これは、SharePoint が内部で COM を使用している場合にのみ問題になります (実際に使用されていると思います)。次のように PowerShell コンソールを STA モードで実行することで、これを確認できます。

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

Start-Process コマンドレット用に PowerShell 2.0 を使用していると仮定します。

于 2010-10-07T17:37:16.713 に答える