PowerShell呼び出しカスタムコードにはspweb.currentuser = null(特定の場合)があります
-
16-10-2019 - |
質問
SharePoint 2010パブリッシングサイトのバリエーションをセットアップするコードを含むカスタムアセンブリがあります。このコードはaに基づいています Waldekからのブログ投稿
新しいWebApplicationとSiteCollectionを作成するPowerShellスクリプトがあり、カスタムアセンブリをロードして、バリエーションをセットアップするメソッドを呼び出しようとします。問題は、spweb(rootweb)のcurrenturuserプロパティがreturns nullで作業しようとしていることです。これは、アクセスの根本的な原因であるエラーが拒否されます。
これを2つのスクリプトに分解し、1つは作成を行い、もう1つはカスタムコードを呼び出すために機能します。それらを順番に呼び出す単一の親スクリプトにそれらをラップすると、私はnullのcurrentuserに戻ります。
必要な使用には、1つのスクリプトのインストールのコンテキストで機能するためにこれが必要です。
誰かがこれを見たことがありますか?それとも、この問題をどのように克服するかについてのアイデアはありますか?
解決
これを説明する方法は、PowerShellがキャッシュに大きく依存しているため、キャッシュの問題のように聞こえます。
メインコンソールからその場で新しいPowerShellプロセスを生み出すことにより、プロビジョニングスクリプトでこれを避けます。これは、UACが有効になっている場合、シェルが管理者と呼ばれるようにするためにも使用できます。
$shell = Start-Process powershell -verb runas -Passthru
Passthruは、返品コードでシェルを終了することを可能にします。 Runas動詞はシェルを上げます。
他のヒント
アクティブなspcontextが不足していることと同様のことを見てきました。これは関連するかもしれませんが、チェックする価値があります。あります 技術 非常に役立つラッパーを作成するために使用できます(コンソールアプリでも使用します)。