Frage

In meinem einfachen Powershell-Skript erhalte ich immer wieder die Fehlermeldung "Ausnahme beim Aufruf von "ResetRoleInheritance" :Es gibt nicht festgeschriebene Änderungen am SPWeb-Objekt, rufen Sie SPWeb auf.Update (), um die Änderungen vor dem Aufruf dieser Methode festzuschreiben."

Ich versuche, alle Unterwebsites mit geerbten Berechtigungen zurückzusetzen, um die Berechtigungen für unsere Teamwebsites zu bereinigen.Wo soll ich SPWeb platzieren.Update() im folgenden Code?

$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()
War es hilfreich?

Lösung

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()

Andere Tipps

Ich war es leid, mich mit diesem Problem zu befassen, also habe ich es umgangen, indem ich jedes SPWeb einzeln abgerufen und eine Liste von URLs als verwendet habe string Array.So etwas in der Art:

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

(kopieren und Einfügen von URLs in / aus einer Textdatei in eine neue Powershell-Sitzung)

# 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() }

Wahrscheinlich keine großartige Lösung für automatisierte Skripte, aber es hat mich über die Linie gebracht.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit sharepoint.stackexchange
scroll top