2010-11-25 53 views
1

La configuration est MOSS2007. J'itérer les liens dans la QuickLaunch, et mettre à jour l'URL:Mise à jour de l'URL du lien de lancement rapide SharePoint via PowerShell

$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(); 
} 

Mais les URL doclib ne met pas à jour. Si je vais dans Paramètres du site -> Navigation -> et modifiez l'URL via l'interface utilisateur, puis réexécutez mon script, l'URL est mise à jour. Pourquoi ne puis-je pas manipuler l'URL via le code?

+0

La version de PowerShell est 1.0. Le MOSS est avec les fonctionnalités de publication. – andersbs

Répondre

1

Je ne suis pas sûr si c'est la réponse, mais il me semble que votre Dispose est au mauvais endroit. Il doit se trouver à l'extérieur du foreach externe, c'est-à-dire au même niveau d'imbrication que votre affectation $ spSite. Cette élimination répétée peut causer des problèmes de synchronisation.

+0

Vous avez raison. La disposition est au mauvais endroit. Mais cela n'a pas résolu le problème, malheureusement. :-) – andersbs

+0

@AndersBS - peut-être que vous pourriez marquer cela résolu? – bgmCoder