Les modifications non validées sur l'objet SPWeb
-
10-12-2019 - |
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()
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.