1

あなたたちは私を救わなければならない。70以上のSharePoint2013ページに移動し、各ページのhtmlにある3つ以上のリンクのそれぞれを正しいコピーバージョンに手動で置き換えることになっています。のように、すべてのリンクは現在/ place1 / place2 / linkを指しており、/ place3 / place4/linkである必要があります。

したがって、検索や置換など、すべてのページを一括編集する方法が必要です。そうしないと、隅に座って何時間も泣いてしまうからです。私はプロジェクトリーダーではないため、フォルダ構造を編集できません。

私は正気を保つために必要なことは何でもします。

4

1 に答える 1

2

PowerShellを使用できます。この質問から:

function ProcessWeb($currentWeb)
{
    if([Microsoft.SharePoint.Publishing.PublishingWeb]::IsPublishingWeb($currentWeb))
    {            
        $publishingWeb = [Microsoft.SharePoint.Publishing.PublishingWeb]::GetPublishingWeb($currentWeb)
        $publishingPages = $publishingWeb.GetPublishingPages()
        foreach ($publishingPage in $publishingPages)
        {
            if($publishingPage.ListItem.File.CheckOutStatus -eq "None")
            {
                UpdatePage -page $publishingPage
            }
        }    
        Write-Host -ForegroundColor red "FINISHED"
    }
    else
    {
        Write-Host -Foregroundcolor Red "^ not a publishing site" 
    }
}

function UpdatePage($page)
{
    $page.CheckOut();
    Write-Host -Foregroundcolor green $page.Url;        
    $NewPageContent = $page["PublishingPageContent"].Replace("/place1/place2/link","/place3/place4/link");
    $page["PublishingPageContent"] = $NewPageContent    
    $page.ListItem.Update();
    $page.CheckIn("nothing");
    $page.ListItem.File.Approve("Updated PublishingPageContent to replate place1/place2 with place3/place4");
}

ProcessWeb(Get-SPWeb -identity http://myintranet.com)

適切なreplaceステートメントがどのように機能するかを理解する必要があることに注意してください。また、これにより、問題が発生する可能性のある変更が自動化されるため、本番環境でコンテンツデータベースをバックアップしてから、最後に実行する前に、まずdev/uat環境で実行するようにしてください。

于 2013-02-14T00:33:44.427 に答える