powershell,子字符串。用相对URL替换绝对URL

powershell,子字符串。用相对URL替换绝对URL,powershell,Powershell,我有一个顶部导航栏,它是使用绝对URL而不是相对URL构建的,问题是,如果我将该网站集从PROD备份到QA,那么QA中的URL指向生产 因此,我试图创建一个脚本,用相对URL替换绝对URL 具体问题是:。有了已知的Url根目录和大量的Url,如何从第二个Url中删除第一个Url 例如: 如果变量中有www.mydomain.com。 第二个变量是www.mydomain.com/sites/site1 我希望它只返回/sites/site1 这就是我目前得到的 $var1 = "https:/

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

因此,我试图创建一个脚本,用相对URL替换绝对URL

具体问题是:。有了已知的Url根目录和大量的Url,如何从第二个Url中删除第一个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
                #    }
                #}
            }
        }
    }
}
在屏幕截图上,旧url如下所示:

新Url应为:

/Pages/clientinvoices.aspx

像这样的事

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

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

$var2

/Pages/clientinvoices.aspx

代码只输出经过修剪的字符串。我更改了代码,将结果分配回var2,以匹配您的使用情况。请使用屏幕截图查看我更新的问题,可能我不够清楚?我更新了脚本以匹配您的示例,它似乎符合您的要求。您在Var1中的url中有4个x,在var2中的url中有5个x,所以它不会匹配。这只是一个例子