Pregunta

Estoy intentando crear un script de Powershell, que itera sobre todas las colecciones de sitios y comprueba si están bloqueadas.

Esto se debe a que, a veces, algunas colecciones no regresan del modo de solo lectura después de la copia de seguridad nocturna.Si un SC está en modo de solo lectura, quiero configurarlo en unlock.

Este es mi código hasta ahora:

$sites = get-spsite -limit all | foreach 
{
    write-host "Site Collection: " $_.RootWeb.Title
    if (  $_.ReadOnly -eq $true)
    { 
         write-host "Site Collection: "$_.RootWeb.Title "--- Read-only" 
         //How to unlock?
         //Set-SPSite -identity $_.RootWeb -lockstate unlock
         //$_.ReadOnly = $false
    }
}

No puedo verificar si mi código de desbloqueo funciona porque no tengo un entorno de prueba disponible en este momento.Necesito ayuda para la línea comentada sobre cómo desbloquear correctamente $_.RootWeb

Atentamente

/editar:Para dejar las cosas claras.El problema no es que no tenga entornos de prueba.El problema es que no puedo acceder a ellos en este momento.No puedo entender desde el principio cómo puedo establecer la propiedad de solo lectura en falso o cómo obtener el -identity de $_. para obtener el Set-SPSite trabajando en el bucle foreach.

¿Fue útil?

Solución

El siguiente código POC me funciona:

foreach($site in Get-spsite "PORTALURL/*" -limit all)
{
    Write-Host $site.RootWeb.Url
    $site.ReadOnly = $true
    Write-Host "Is read only:" $site.ReadOnly
    $site.ReadOnly = $false
    Write-Host "Is read only:" $site.ReadOnly
    $site.Dispose()
}

Primero configura exitosamente un sitio como de solo lectura y luego lo desarma.

Otros consejos

Desafortunadamente, que yo sepa, realmente no existe un equivalente de una línea en PowerShell para "obtener" bloqueos para colecciones de sitios.Si enumera las propiedades del objeto de la colección de sitios, no hay ninguna propiedad llamada "Estado de bloqueo" o similar.Los valores de bloqueo que se muestran en la interfaz de usuario en realidad se almacenan en 4 propiedades diferentes en el objeto de la colección de sitios:

  • Solo lectura
  • Leer bloqueado
  • Escritura bloqueada
  • Problema de bloqueo

Para obtener la lista de colecciones de sitios bloqueados, puede utilizar el siguiente script de PowerShell.

Add-pssnapin Microsoft.SharePoint.Powershell -ErrorAction silentlycontinue
$sites = get-spsite -limit all | foreach
{
    write-host "Checking lock for site collection: " $_.RootWeb.Title -foregroundcolor blue
    if ($_.ReadOnly -eq $false -and $_.ReadLocked -eq $false -and $_.WriteLocked -eq $false)
    {
        write-host "The site lock value for the site collection"$_.RootWeb.Title "is:  Unlocked" -foregroundcolor Green
    }
    if ($_.lockissue -ne $null)
    {
        write-host "The additional text was provided for the lock: " $_.LockIssue -foregroundcolor Green
    }
    elseif ($_.ReadOnly -eq $false -and $_.ReadLocked -eq $false -and $_.WriteLocked -eq $true)
    {
        write-host "The site lock value for the site collection"$_.RootWeb.Title "is:  Adding Content Prevented" -foregroundcolor Green
    }
    elseif ($_.ReadOnly -eq $true -and $_.ReadLocked -eq $false -and $_.WriteLocked -eq $true)
    {
        write-host "The site lock value for the site collection"$_.RootWeb.Title "is:  Read-only" -foregroundcolor Green
    }
    elseif ($_.ReadOnly -eq $null -and $_.ReadLocked -eq $null -and $_.WriteLocked -eq $null)
    {
        write-host "The site lock value for the site collection"$_.RootWeb.Title "is:  No Access" -foregroundcolor Green
    }
}

Después de ejecutar el script anterior, sabrá qué colecciones de sitios están bloqueadas; utilizando el siguiente código puede desbloquearlas, en lugar de configurar el desbloqueo para todas las colecciones de sitios.

usando STSADM stsadm -o setsitelock -url <Site-collection-url> -lock Unlock

Usando PowerShell Set-SPSite -identity "<Site-collection-url>" –lockstate Unlock

Fuente

De acuerdo a este artículo de TechNet para SharePoint 2010, el código de PowerShell para bloquear o desbloquear una colección de sitios es el siguiente:

Set-SPSite -Identity "<SiteCollection>" -LockState "<State>"

Dónde Colección de sitios es la URL de la colección de sitios que desea bloquear o desbloquear.

Y Estado es uno de los siguientes valores:

  • desbloquear para desbloquear la colección de sitios y ponerla a disposición de los usuarios.
  • Sin adiciones para evitar que los usuarios agreguen contenido nuevo a la colección de sitios.Aún se permiten actualizaciones y eliminaciones.
  • Solo lectura para evitar que los usuarios agreguen, actualicen o eliminen contenido.
  • Sin acceso para evitar que los usuarios accedan a la colección de sitios y a su contenido.Los usuarios que intentan acceder al sitio reciben un error.

Entonces, para desbloquear, LockState debe configurarse en desbloquear

Pero realmente te recomiendo que configures un entorno de prueba para probar esto.Configure un entorno de SharePoint Foundation en una máquina virtual.

Licenciado bajo: CC-BY-SA con atribución
scroll top