I'm using the following PowerShell script to update the Navigation.GlobalIncludeSubSites value from true to false, which is working, except that the changes are not properly applied.
By that I mean that if I look at the AreaNavigationSettings.aspx page for a site before I run the script I see that "Show subsites" is checked (and the page is showing the wrong menu). After I run the script below, and check that page again, the checkbox is unchecked, but the site is still showing the wrong menu. Only after I click OK on the AreaNavigationSetting.aspx page does the correct menu show up.
As you can see in my code, I am using $pubWeb.Update(), so I'm not sure why the changes aren't being applied without manually clicking OK on each AreaNavigationSettings.aspx page, which defeats the purpose of using the script in the first place.
function ProcessSubWebs($currentWeb) { foreach($sub in $currentWeb.Webs) { if($sub.Webs.Count -ge 0) { Write-Host -ForegroundColor black $sub.Url UpdateNavigation($sub) ProcessSubWebs($sub) $sub.Update() $sub.Dispose() } } } function UpdateNavigation($web) { $pubWeb = [Microsoft.SharePoint.Publishing.PublishingWeb]::GetPublishingWeb($web) Write-Host -ForegroundColor green $pubWeb.Navigation.GlobalIncludeSubSites $pubWeb.Navigation.InheritGlobal = $true $pubWeb.Navigation.GlobalIncludeSubSites = $false $pubWeb.Navigation.GlobalIncludePages = $false $pubWeb.Update() } ProcessSubWebs(Get-SPWeb -identity http://myserver/site1) Write-Host -ForegroundColor red "FINISHED" Any ideas?
[update based on Dave Wise's answer below]
Replace
$pubWeb.Update() with
$web.AllowUnsafeUpdates = 1; $web.Update() worked for me! Thanks Dave :)
areanavigationsettings.aspx, so it's not just powershell reporting cached or old info. The setting is getting changed, but not applied/saved.Anonymous Cache ProfileandAuthenticated Cache Profileare set toDisabled. Your point about 3 minute sis interesting. I contacted the authoring of the article where I got the script (and adapted it), and he said that the updates where a timer job. That said, it's been hours now, and still the sites are not having the 'show subsites' change applied.$pubWeb.AllowUnsafeUpdates = true;prior to the.Update()