0

我有一个使用绝对 url 而不是相对 url 构建的顶部导航栏,问题是,如果我将该网站集从 PROD 备份还原到 QA,那么 QA 中的 url 指向生产。

所以,我正在尝试创建一个脚本来用相对 URL 替换绝对 URL。

具体问题是:。有了知道的 Url Root 和很多 url,我怎样才能从第二个中删除第一个?

示例:如果我在变量中有 www.mydomain.com。然后在第二个变量中我有 www.mydomain.com/sites/site1 我希望它只返回 /sites/site1

这是我到目前为止得到的

 $var1 = "https://xxxx.com"
$var2 = "https://xxxxx.com/sites/10024960/"
$rootSiteCollection = Get-SPSite $siteCollectionUrl
if ($rootSiteCollection -ne $null)
{
     if($Site.RootWeb.AllProperties["WebTemplate"] -eq "Client")
     {
        $rootWeb = $rootSiteCollection.RootWeb
        $navigationNodes = $rootWeb.Navigation.TopNavigationBar 
        if ($navigationNodes -ne $null)
        {
            foreach($navNode in $navigationNodes)
            {
                write-host 'Old Url: '  $navNode.Url

                $regex = "^$([regex]::Escape($var1))(.+)"
                $var2 -replace $regex,'$1'

                write-host 'New Url: '  $var2

                #if($navNode.Children.Count -ge 0)
                #{
                #    foreach($navNodeChild in $navNode.Children)
                #    {
                #        write-host 'Old Url'
                #        write-host $navNode.Url
                #    }
                #}
            }
        }
    }
}

在下面的屏幕截图中,旧网址是:

https://xxx.com/Pages/clientinvoices.aspx

新的 URL 应该是:

/Pages/clientinvoices.aspx

http://screencast.com/t/73Uof4je

4

1 回答 1

2

像这样的东西?

$$var1 = 'https://example.com'
$var2 = 'https://example.com/Pages/clientinvoices.aspx'

$regex = "$([regex]::Escape($var1))(.+)"
$var2 = $var2 -replace $regex,'$1'

$var2

/Pages/clientinvoices.aspx

于 2013-10-28T14:00:43.353 回答