Enum all quicklaunch and replace url

Nel codice seguente ho enumerato tutti gli oggetti SPWeb partendo da un site e per ciascuno ho fatto accesso all'oggetto Navigation per sostituire delle URL assolute provenienti da una migrazione, portandole in URL relative:

Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue

$Web = 'http://mywebapp'
$FindString = 'https://sourceurltofind' 
$ReplaceString = ''

$SPSite = Get-SPSite $Web
$SPWeb = Get-SPWeb $Web

$SPSite.AllWebs | ForEach-Object {
    write-host "Work with <"$_.Title"> <"$_.ServerRelativeUrl">"

    $_.Navigation.QuickLaunch | ForEach-Object {

        if($_.Url -match $FindString){
            $linkUrl = $_.Url
            Write-Host "Updating $linkUrl with new URL"
            $_.Url = $_.Url.Replace($FindString,$ReplaceString)
            $_.Update()
        }
        $_.Children | ForEach-Object {
            if($_.Url -match $FindString){
                $linkUrl = $_.Url
                Write-Host "Updating $linkUrl with new URL"
                $_.Url = $_.Url.Replace($FindString,$ReplaceString)
                $_.Update()
            }
        }
    }
    $_.Dispose()

}

Errore in fase di installazione: OfficeClassicSetup

Nel momento in cui si installa, come nel mio caso, SharePoint 2013 su una macchina virtuale per evitare di incorrere nell'errore OfficeClassicSetup è necessario incrementare il numero di processori ;)

 

Fonte:

https://bramdejager.wordpress.com/2014/04/23/error-installing-sharepoint-2013-sp1-bits-on-virtual-machine/

The Managed Metadata Service or Connection is currently not available. The Application Pool or Managed Metadata Web Service may not have been started. Please Contact your Administrator.

Verificare che il servizio è Started:

Andare in Application Management -> Manage services on server e verifica il servizio Managed Metadata Service Application è Stopped.

Dopo averlo avviato effettuare IISRESET

Enumerate all WebApplication and all Site Collection

Per recuperare dalla farm tutte le web application e per ciascun web application le proprie site collection guarda il seguente codice:

foreach (SPService svc in SPFarm.Local.Services)
{
     if (!(svc is SPWebService))
          continue;

     foreach (SPWebApplication webApp in ((SPWebService)svc).WebApplications)
     {         
          foreach (SPSite site in webApp.Sites)
          {

Month List