One of our customers needed some help to build out navigation from a .csv file in their Microsoft Office SharePoint Server 2007 environment.
PowerShell seemed to be the most simple option for them; so my colleague Andy and I created the following script:
[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")
$url = "http://intranet"
$sc = New-Object Microsoft.SharePoint.SPSite($url)
$csv = Import-Csv -Path "e:\siteNav.csv"
foreach ($s in $sc)
{
$w = $sc.OpenWeb()
$tn = $w.Navigation.TopNavigationBar
if (!$w.Navigation.UseShared)
{
foreach ($line in $csv)
{
if ($line.parent -eq "") {
$l = New-Object Microsoft.SharePoint.Navigation.SPNavigationNode($line.description,$line.link,"true");
$tn.AddAsLast($l);
}
elseif ($line.parent -ne "") {
$navBar = $tn.Navigation.TopNavigationBar
foreach ($navItem in $navBar){
if ($navItem.Title -eq $line.parent)
{
$x = New-Object Microsoft.SharePoint.Navigation.SPNavigationNode($line.description,$line.link,"true");
$navItem.Children.AddAsLast($x);
}
}
}
}
$w.Update()
$w.Dispose()
}
$s.Dispose()
}
The CSV file was structured with three columns (Description, URL and Parent):