Незаметные изменения на объекте SPWEB
-
10-12-2019 - |
Вопрос
в моем простом скрипте PowerShell, я продолжаю получать ошибку «исключение, вызывающую« ретритетролейтериальность »: существуют незаметные изменения в объекте SPWEB, вызовите SPWEB.Update () для совершения Cahnges перед вызовом этого метода."
Я пытаюсь сбросить все субзиты с унаследованными разрешениями при подготовке очистки разрешений для наших командных сайтов.Где я должен поместить 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()
Другие советы
Я устал иметь дело с этим вопросом, поэтому я повернул его, выбрав каждую SPWEB индивидуально, используя список URLS в качестве массива string
.Что-то вроде этого:
$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() }
.
, вероятно, не отличное решение для автоматизированных сценариев, но он получил меня по линии.