Question

Dans mon simple script Powershell, je reçois un message d'erreur "Exception d'appeler "ResetRoleInheritance" :Il y a des modifications non validées sur l'Objet SPWEb, appel SPWeb.Mise à jour() pour valider la cahnges avant d'appeler cette méthode."

Je suis tenter de réinitialiser tous les sous-sites avec des autorisations héritées dans la préparation de nettoyer les autorisations pour notre TeamSites.Où dois-je placer SPWeb.Mise à jour() dans le code suivant?

$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()
Était-ce utile?

La solution

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

Autres conseils

J'étais fatigué de traiter avec ce problème je me suis donc autour d'elle en allant chercher chaque SPWeb individuellement, à l'aide d'une liste d'url comme un string tableau.Quelque chose comme ceci:

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

(copier et coller des url vers/depuis un fichier texte pour la nouvelle session 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() }

Probablement pas une bonne solution pour les scripts automatisés, mais il m'a eu sur la ligne.

Licencié sous: CC-BY-SA avec attribution
Non affilié à sharepoint.stackexchange
scroll top