質問

私の解決策を追加し、ソリューションを起動し、最後にSP2010サーバーのアクティベーション機能を追加するためのPowerShellスクリプトを作成しています。ソリューションを追加し、ソリューションの展開に問題はありません。問題は、enable-spfeatureコマンドで機能を有効にしようとすると、UIを介して機能が存在しますが、サーバー上の機能が見つかりません。展開がまだその途中である間は早すぎることが疑います。展開が完了したかどうかを確認する方法はありますか、またはいくつかのサービスか何かを再起動する必要があります。

をお勧めしてください

役に立ちましたか?

解決

あなたが経験しているものはおそらくキャッシングです。

PowerShellは、SPWebとSpsiteなどのインスタンス化されたオブジェクトをキャッシュし、その内容を1つずつ実行すると、追加の機能が表示されます。

簡単なテスト方法これが問題である場合は、スクリプトを2つのうちに分割してください。 その後、最初に1つのスクリプトを実行し、シェルを閉じ、別のものを開いて実行します。

問題なく実行されている場合、これはキャッシングの問題です。

フォルダに基づく新しいプロセスを産むことでこれを解決しました(スタートプロセス "PowerShell.exe" ....)

010 Solutions
    10 Solution
    20 Features
020 Etc etc
.

新しいフォルダごとに新しいPowerShellインスタンスとして解釈されます。

これはうまく機能しますので、私は同様のアプローチをお勧めします。より単純なアプローチは、機能プロビジョニングを実行するための新しいプロセスを単に生成することです:

$command = "your commands goes here"
$bytes = [System.Text.Encoding]::Unicode.GetBytes($command)
$encodedCommand = [Convert]::ToBase64String($bytes)
# encoded to avoid encoding and escaping issues
# STA ensures you are running single threaded, important as most SharePoint objects isnt multi threaded
Start-Process powershell.exe -NoLogo -encodedCommand $encodedCommand -STA
.

ライセンス: CC-BY-SA帰属
所属していません sharepoint.stackexchange
scroll top