Pergunta

Eu estou tentando criar um Script Powershell, que itera sobre todos os SiteCollections e verifica se eles estão no bloqueio.

Isto porque, às vezes, algumas coleções não voltar de leitura-somente, após a cópia de segurança nocturna.Se um SC é só de leitura, eu quero é unlock.

Este é o meu código até agora:

$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
    }
}

Eu não posso verificar se o meu código de desbloqueio está trabalhando, porque eu não tenho nenhum ambiente de teste no lado direito agora.Preciso de ajuda para a linha de comentário sobre como corretamente desbloquear $_.RootWeb

Com os melhores cumprimentos

/edição:Para tornar as coisas claras.O problema não é que eu não tenho ambientes de teste.O problema é que eu não pode acessá-los agora.Eu não consigo descobrir a partir do topo de minha cabeça como eu posso definir a propriedade readonly como falsos ou como se o -identity a partir de $_. para obter o Set-SPSite trabalhando no loop foreach.

Foi útil?

Solução

O seguinte POC código funciona para mim:

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()
}

Primeiro, ele define com êxito um site como Só de Leitura e, posteriormente, unsets-lo.

Outras dicas

Infelizmente, não há realmente uma linha equivalente em PowerShell para "chegar" bloqueios para os conjuntos de sites que eu conheço.Se você listar as propriedades do conjunto de sites objeto, não existe uma propriedade chamada de "Estado de Bloqueio" ou similar.O bloqueio de valores mostrados na INTERFACE do usuário, na verdade, são armazenados em 4 diferentes propriedades no site objecto de colecção:

  • Somente leitura
  • ReadLocked
  • WriteLocked
  • LockIssue

Para obter a lista de bloqueados conjuntos de sites, você pode fazer uso de o abaixo script do 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
    }
}

Depois de executar o script acima você vai ficar a saber que todos os conjuntos de sites são bloqueados, usando o código abaixo, você pode desbloqueá-lo, em vez de definir desbloqueio para todos os conjuntos de sites,

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

A Utilização Do PowerShell Set-SPSite -identity "<Site-collection-url>" –lockstate Unlock

Origem

De acordo com a este artigo da TechNet para o SharePoint 2010, o código PowerShell para bloquear ou desbloquear um conjunto de Sites é o seguinte:

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

Onde SiteCollection é a URL do conjunto de sites que você deseja bloquear ou desbloquear.

E Estado é um dos seguintes valores:

  • Desbloquear para desbloquear o conjunto de sites e a torná-lo disponível para os usuários.
  • NoAdditions para impedir que os usuários adicionem conteúdo novo para o conjunto de sites.Atualizações e exclusões ainda são permitidos.
  • Somente leitura para impedir que os usuários adicionar, actualizar ou eliminar conteúdo.
  • NoAccess para impedir os utilizadores de aceder a colecção de site e de seu conteúdo.Os usuários que tentarem acessar o site recebe um erro

Para desbloquear, o LockState deve ser definido para Desbloquear

Mas eu aconselho você a configurar um test-ambiente de tentar.Configurar um ambiente do SharePoint Foundation em uma Máquina Virtual.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a sharepoint.stackexchange
scroll top