SharePoint: Modos “ReadOnly” vs. “Manteinance” en colecciones de Sitios!

“Enredando” con PowerShell y las propiedades que se pueden modificar o no a nivel de Colección de Sitios (objeto SPSite), me surgió la duda de que diferencia hay entre las propiedades ReadOnly y ManteinanceMode y de ahí que me decidiera a escribir un post al respecto:

  • Básicamente, la propiedad ManteinanceMode a nivel de colección de sitios nos indica si está en modo mantenimiento o no…esta propiedad no se puede modificar desde el modelo de objetos, pero si puede ser modificada por SharePoint si a nivel de SQL Server se ha hecho un cambio de la BD de Contenidos en la reside la colección pasándola a un estado de solo lectura. En cambio, la propiedad ReadOnly nos permite configurar una colección para que pase a estado “Modo de sólo lectura” que en esencia es como el estado de “Mantenimiento”, pero con la diferencia de que en este caso si podemos modificar el valor de esta propiedad mediante el modelo de objetos lo cuál es interesante en escenarios en los que queremos hacer un movimiento de nuestras BDs de Contenidos a otra granja o bien en escenarios de migración desde versiones previas de SharePoint.
  • Para jugar con ambas propiedades, he creado el siguiente script PowerShell que por un lado permite leer los valores de ambas propiedades y por otro permite cambiar el valor de la propiedad ReadOnly para una cierta Colección de Sitios:
   1: ############################################################################################################################################

   2: # This script allows to play with ReadOnly and ManteinanceMode properties at the Site Collection Level

   3: # Required Parameters: 

   4: #    ->$sSiteCollection: Site Collection where we are going to do the backup / restore.

   5: #    ->$sOperationType: Operation Type (Read / Modify properties).

   6: #    ->$sReadOnlyMode: Read Only mode for the ReadOnly property.

   7: ############################################################################################################################################

   8:  

   9: If ((Get-PSSnapIn -Name Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue) -eq $null ) 

  10: { Add-PSSnapIn -Name Microsoft.SharePoint.PowerShell }

  11:  

  12: $host.Runspace.ThreadOptions = "ReuseThread"

  13:  

  14: #Definition of the function that restores de deleted Site Collection

  15: function ReadModify-SPSiteProperties

  16: {

  17:     param ($sSiteCollection,$sOperationType,$sReadOnlyMode)

  18:     try

  19:     {

  20:         $spSite=Get-SPSite -Identity $sSiteCollection

  21:         

  22:         #Operation Type

  23:         switch ($sOperationType) 

  24:         { 

  25:         "Read" {

  26:             Write-Host "Reading $sSiteCollection values for ReadOnly & ManteinanceMode properties!!" -ForegroundColor Green

  27:             Write-Host "Value for ReadOnly property: " $spSite.ReadOnly -ForegroundColor Green

  28:             Write-Host "Value for ManteinanceMode property: " $spSite.MaintenanceMode -ForegroundColor Green

  29:             } 

  30:         "Modify" {

  31:             Write-Host "Modifiyng ReadOnly property in $sSiteCollection to $sReadOnlyMode" -ForegroundColor Green

  32:             $spSite.ReadOnly=$sReadOnlyMode            

  33:             Write-Host "Value for ReadOnly property: " $spSite.ReadOnly -ForegroundColor Green            

  34:             }         

  35:         default {

  36:             Write-Host "Requested Operation not valid!!" -ForegroundColor Green          

  37:             }

  38:         }

  39:        

  40:         $spSite.Dispose()

  41:     }

  42:     catch [System.Exception]

  43:     {

  44:         write-host -f red $_.Exception.ToString()

  45:     }

  46: }

  47:  

  48: Start-SPAssignment –Global

  49: #Calling the function

  50: ReadModify-SPSiteProperties -sSiteCollection "http://c4968397007:90" -sOperationType "Read"

  51: ReadModify-SPSiteProperties -sSiteCollection "http://c4968397007:90" -sOperationType "Modify" -sReadOnlyMode $false

  52: ReadModify-SPSiteProperties -sSiteCollection "http://c4968397007:90" -sOperationType "Read"

  53: Stop-SPAssignment –Global

  54:  

  55: Remove-PSSnapin Microsoft.SharePoint.PowerShell

  • Si ejecutamos el script para leer los valores de ambas propiedades, inicialmente su valor será cero. Si ejecutamos el script de forma que cambiemos el valor de la propiedad ReadOnly a True, veremos como al acceder el sitio, este está en modo lectura y se muestra la correspondiente barra informativa indicando este hecho:

image

  • En cambio, si cambiamos el modo de la BD de contenidos donde reside la colección a modo ReadOnly veremos que la propiedad ManteinanceMode tiene un valor True y que en la barra informativa al acceder el sitio se indica un mensaje diferente a cuando se hizo el cambio de ReadOnly a True, aunque la experiencia de acceso es la misma en ambos casos.

image

Podéis descargaros el script que he usado para este post del siguiente enlace: How to read and modify ReadOnly and ManteinanceMode Site Collection Properties