使用PowerShell更新子节点不会反映在SharePoint GUI中

时间:2015-05-04 14:49:24

标签: powershell sharepoint sharepoint-2013

我正在尝试使用PowerShell更新SharePoint网站上的节点标题:

$web = Get-SPWeb "http://dev:18792/sites/devsite/"

foreach ($webs in $web.Webs)
{

$nodes = $webs.Navigation.QuickLaunch
foreach ($node in $nodes)
{
    $nodeTitle = $node.Title
    if ($nodeTitle.ToString().Contains("First node"))
    {
        foreach ($nodeChild in $node.Children) {

            $nodeChildTitle = $nodeChild.Title

            if ($nodeChildTitle.ToString().Contains("Original childnode title")) {

                $nodeChild.Title = "Changed title"
                $nodeChild.Update()
                Write-Host "done."
            }
        }

    }
    $webs.Dispose()
}
$web.Dispose()
} 

如果我再试一次并改变

.Contains("Original childnode title")

为:

.Contains("Changed title")

确实输入了if语句,但是在GUI中看不到更改。

我在这里错过了什么吗?

1 个答案:

答案 0 :(得分:0)

可能是因为您激活了发布功能吗?在发布网站中操纵快速启动有点不同。这是一些C#代码示例:

 PublishingWeb pubWeb = PublishingWeb.GetPublishingWeb(oWeb);
 SPNavigationNodeCollection nodes = pubWeb.Navigation.CurrentNavigationNodes;
 foreach (SPNavigationNode node in nodes)
 {
   if (node.Title == "Original Title")
   {
      node.Title = "New Title";
      node.Update();
      break;
   }

}

否则尝试调用$ webs.Update()方法