Question

J'ai deux applications Web différentes avec une collection d'un site chacune.Une collection de site est le private et l'autre sur est public à l'intérieur de l'intranet.Le site public Liens vers le site privé que le lien n'est visible que si vous avez accès au site privé.

Cette configuration a été copiée dans un environnement de test dans lequel l'URL a changé de société.se à CompanyTest.se.Une propriété personnalisée de l'élément de liste de la bibliothèque de pages indique toujours l'ancienne URL et doit être mise à jour.

J'ai essayé de construire un script PowerShell qui irait bien via la bibliothèque de pages et mettra à jour la propriété en conséquence.Tout en testant que j'ai sélectionné une seule page pour voir si je reçois le résultat souhaité.Mais je ne le fais pas.Probablement je manque seulement certaines des logiques, mais je ne peux pas sembler le faire correctement.

Le script de propriété de mise à jour
$site = Get-SPSite https://intranettest.company.se/

$web = $site.OpenWeb("Workplace/Cooperation")

$list = $web.Lists["Pages"]

foreach ($item in $list.Items)
{
    if ($item.Name -ne "default.aspx")
    {
        if ($item.Name -eq "Intranetpage.aspx")
        {
            Write-Host $item.Name

            $file = $item.File

            $file.CheckOut()

            Write-Host "    Before change: " $item.Properties["PrivateSiteCollection"]

            $item.Properties["PrivateSiteCollection"] = $item.Properties["PrivateSiteCollection"] -replace "cooperation", "cooperationtest"

            Write-Host "    After replace: " $item.Properties["PrivateSiteCollection"]

            $item.Update()

            Write-Host "After item update: " $item.Properties["PrivateSiteCollection"]

            $file.Update()

            Write-Host "After file update: " $item.Properties["PrivateSiteCollection"]

            $file.CheckIn("Updated property")

            Write-Host "    After checkin: " $item.Properties["PrivateSiteCollection"]
        }        
    }
}

la sortie PowerShell
PS D:\Install\Script> .\Update-Cooperation-Property-PrivateSiteCollection.ps1
Intranetpage.aspx
    Before change:  https://cooperation.company.se/Sites/Intranetpage
https://cooperationtest.company.se/Sites/Intranetpage
    After replace:  https://cooperation.company.se/Sites/Intranetpage
After item update:  https://cooperation.company.se/Sites/Intranetpage
After file update:  https://cooperation.company.se/Sites/Intranetpage
    After checkin:  https://cooperation.company.se/Sites/Intranetpage
PS D:\Install\Script>

Était-ce utile?

La solution

Pour que le changement persistant, je devais utiliser le web $ web.getfile pour faire ce travail correctement.Lorsque j'ai le fichier, je peux vérifier, modifier les propriétés et vérifier à nouveau.La réponse à cette question était (pour moi) ce bloc de code:

$site = Get-SPSite https://intranettest.company.se/

$web = $site.OpenWeb("Workplace/Cooperation")

$list = $web.Lists["Pages"]

foreach ($item in $list.Items)
{
    if ($item.Name -ne "default.aspx")
    {
        $page = $web.GetFile("Pages/" +   $item.Name)

        if ($page.Properties["PrivateSiteCollection"] -notlike "*cooperationtest*")
        {
            $page.CheckOut()

            Write-Host "    Before change: " $page.Properties["PrivateSiteCollection"]  

            $page.Properties["PrivateSiteCollection"] = $page.Properties["PrivateSiteCollection"] -replace "cooperation", "cooperationtest"

            $page.Update()

            $page.CheckIn("Updated property")

            Write-Host "    After checkin: " $page.Properties["PrivateSiteCollection"]
        }
    }
}

Licencié sous: CC-BY-SA avec attribution
Non affilié à sharepoint.stackexchange
scroll top