“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:
-
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.
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