質問

My Simple PowerShellスクリプトでは、「ResetroleInheritance」を呼び出すエラーが発生し続けます.SPWebオブジェクトには、コミットされていない変更があります。

私たちのチームサイトの権限の整理の準備の中で、すべてのサブサイトを継承した権限とリセットしようとしています。次のコードにspweb.update()を配置する必要がありますか?

$spWeb = Get-SPWeb "http://<sitecollection>/<subsite>/"

Echo "Resetting Permission Inheritance for Site: $spWeb"
$spWeb.ResetRoleInheritance()
$spWeb.Update()

foreach($subSite in $spWeb.Webs)
{
  Echo "Resetting Permission Inheritance for SubSite: $subSite"
  $subSite.ResetRoleInheritance()
  $subSite.Update()
  $subSite.Dispose()
}
$spWeb.Dispose()
.

役に立ちましたか?

解決

This works... for some reason. I have no idea why, really. It most definately could be cleaned up i'm sure as well:

$spWeb = Get-SPWeb "http://<site collection>/<subsite>/"

Echo "Resetting Permission Inheritance for Site: $spWeb"


foreach($subSite in $spWeb.Webs)
{
  $subSite.Update()
  Echo "Resetting Permission Inheritance for SubSite: $subSite"
  $subSite.ResetRoleInheritance()
  $subSite.Update()
  $subSite.Dispose()
}
$spWeb.ResetRoleInheritance()
$spWeb.Update()
$spWeb.Dispose()

他のヒント

私はこの問題に対処するのにうんざりしていましたので、stringアレイとしてURLのリストを使用して、各SPWebを個別に取得することによってそれを回避しました。このようなもの:

$urls = (Get-SPWeb "http://<site collection>/<subsite>/").webs | select -exp url
.

(テキストファイルへの/からのURLを新しいPowerShellセッションにコピーして貼り付ける)

# this is now a brand new SPWeb object each time. to be absolutely sure im not causing the afore-mentioned errors
$urls | foreach { $web = get-spweb $_; $web.resetroleinheritance(); $web.dispose() }
.

おそらく自動スクリプトにとって素晴らしいソリューションではなく、ラインを越えて私を手に入れました。

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