2010-11-25 61 views
1

設置爲MOSS2007。我迭代QuickLaunch中的鏈接,並更新URL:通過PowerShell更新SharePoint快速啓動鏈接URL

$siteUrl = "http://myserver/" 
$spSite = new-object Microsoft.SharePoint.SPSite($siteurl) 
for($i=0; $i -lt $spSite.AllWebs.Count;$i++) 
{ 
    $spWeb = $spSite.AllWebs[$i] 
    $nodes = $spWeb.Navigation.QuickLaunch 
    for($j=0; $j -lt $nodes.Count;$j++) 
    { 
      $children = $nodes[$j].Children 
      for($k=0; $k -lt $children.Count;$k++) 
      { 
        $x = $children[$k] 
        $x.Url = "http://mylink/" 
        $x.Update() 
      } 
    } 
    $spSite.Dispose(); 
} 

但Doclib URL不更新。如果我轉到網站設置 - >導航 - >並通過用戶界面編輯URL,然後再次運行我的腳本,URL更新。爲什麼我無法通過代碼操縱網址?

+0

PowerShell版本是1.0。 MOSS具有發佈功能。 – andersbs 2010-11-25 10:03:15

回答

1

我不確定這是否是答案,但它看起來像我的Dispose是在錯誤的地方。它應該在外部foreach之外,即與$ spSite賦值相同的嵌套級別。這種重複的處理可能會導致同步問題。

+0

你說得對。處置是在錯誤的地方。但不幸的是,這並沒有解決問題。 :-) – andersbs 2011-01-25 13:16:41