尝试使用PowerShell在sharepoint 2013网站上快速启动时更新链接网址时遇到问题。基本上我只想更改特定链接的URL。我的Powershell脚本代码如下:
function FixUrlDocumentsLists() {
param([Microsoft.SharePoint.SPWeb]$SiteIdentity)
if ($SiteIdentity.Url -Like "http://mktintranet/sites/tmmkto/ITReports")
{
$quicklaunch = $SiteIdentity.Navigation.QuickLaunch
if($quicklaunch.Count -gt 0)
{
foreach($node in $quicklaunch)
{
if ($node.Title.ToUpper() -ne "HOME" -and $node.Title.ToUpper() -ne "SITE CONTENTS")
{
if($node.Url -eq $SiteIdentity.ServerRelativeUrl)
{
Write-Host "Fixing navigation links for web $($SiteIdentity.Title)" -ForegroundColor Yellow
Write-Host "Link Title: $($node.Title), OLD Link Url: $($node.Url)" -ForegroundColor Yellow
$node.Url=$node.Url.ToString()+"/_layouts/15/viewlsts.aspx"
Write-Host "Link Title: $($node.Title), NEW Link Url: $($node.Url)" -ForegroundColor Yellow
$node.Update()
$SiteIdentity.Update()
}
}
}
}
}
if($SiteIdentity.Webs.Count -gt 0)
{
foreach($subWeb in $SiteIdentity.Webs)
{
FixUrlDocumentsLists -SiteIdentity $subWeb
}
}
}
$ node.Update()方法发生错误。错误描述如下:
Exception calling "Update" with "0" argument(s): "Cannot open "/sites/tmmkto/ITReports/_layouts/15/viewlsts.aspx": no such file or folder."
我无法理解为什么Update方法正在进行Url验证。即使路径/sites/tmmkto/ITReports/_layouts/15/viewlsts.aspx确实存在。
谢谢,
马丁
答案 0 :(得分:0)
如果是内部网址,则SharePoint会尝试验证节点网址。在此过程中,您可以通过以下方式将链接标记为外部链接(即使它不是): Node.IsExternal = true; (CSOM)
答案 1 :(得分:-1)
请确保在
下取消选中显示子网站/显示页面选项:仅显示当前站点下方的导航项。如果您尝试更新从子站点/页面文件生成的导航链接,则会出现此类错误。如果此选项打开并且您尝试修改自动生成的子站点/页面链接的链接,则给出错误是有意义的。