Frage

Ich versuche, ein Powershell-Skript zu erstellen, das alle SiteCollections durchläuft und prüft, ob sie gesperrt sind.

Dies liegt daran, dass einige Sammlungen nach der nächtlichen Sicherung manchmal nicht aus dem schreibgeschützten Zustand wiederhergestellt werden.Wenn ein SC schreibgeschützt ist, möchte ich ihn auf „schreibgeschützt“ setzen unlock.

Das ist mein Code bisher:

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

Ich kann nicht überprüfen, ob mein Freischaltcode funktioniert, da ich momentan keine Testumgebung zur Hand habe.Ich benötige Hilfe für die kommentierte Zeile zum korrekten Entsperren $_.RootWeb

Mit freundlichen Grüße

/bearbeiten:Um die Dinge klarzustellen.Das Problem ist nicht, dass ich keine Testumgebungen habe.Das Problem ist, dass ich momentan nicht darauf zugreifen kann.Ich kann mir nicht aus dem Kopf heraus vorstellen, wie ich die readonly-Eigenschaft auf „false“ setzen kann oder wie ich sie erhalten kann -identity aus $_. um das zu bekommen Set-SPSite Arbeiten in der foreach-Schleife.

War es hilfreich?

Lösung

Der folgende POC-Code funktioniert für mich:

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

Zunächst wird eine Site erfolgreich als schreibgeschützt festgelegt und anschließend wieder deaktiviert.

Andere Tipps

Leider gibt es in PowerShell, soweit ich weiß, wirklich kein einzeiliges Äquivalent zum „Erhalten“ von Sperren für Websitesammlungen.Wenn Sie die Eigenschaften des Websitesammlungsobjekts auflisten, gibt es keine Eigenschaft namens „Sperrstatus“ oder ähnliches.Die in der Benutzeroberfläche angezeigten Sperrwerte werden tatsächlich in vier verschiedenen Eigenschaften im Websitesammlungsobjekt gespeichert:

  • Schreibgeschützt
  • ReadLocked
  • WriteLocked
  • Sperrproblem

Um die Liste der gesperrten Websitesammlungen abzurufen, können Sie das folgende Powershell-Skript verwenden.

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

Nachdem Sie das obige Skript ausgeführt haben, erfahren Sie, welche Websitesammlungen gesperrt sind. Mit dem folgenden Code können Sie sie entsperren, anstatt die Entsperrung für alle Websitesammlungen festzulegen.

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

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

Quelle

Entsprechend diesen TechNet-Artikel Für SharePoint 2010 lautet der PowerShell-Code zum Sperren oder Entsperren einer Websitesammlung wie folgt:

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

Wo SiteCollection ist die URL der Websitesammlung, die Sie sperren oder entsperren möchten.

Und Zustand ist einer der folgenden Werte:

  • Freischalten um die Websitesammlung zu entsperren und sie Benutzern zur Verfügung zu stellen.
  • Keine Ergänzungen um zu verhindern, dass Benutzer neue Inhalte zur Websitesammlung hinzufügen.Aktualisierungen und Löschungen sind weiterhin zulässig.
  • Schreibgeschützt um zu verhindern, dass Benutzer Inhalte hinzufügen, aktualisieren oder löschen.
  • Kein Zugang um zu verhindern, dass Benutzer auf die Websitesammlung und deren Inhalte zugreifen.Benutzer, die versuchen, auf die Website zuzugreifen, erhalten eine Fehlermeldung

Zum Entsperren sollte der LockState auf gesetzt werden Freischalten

Ich empfehle Ihnen jedoch dringend, eine Testumgebung einzurichten, um dies auszuprobieren.Richten Sie eine SharePoint Foundation-Umgebung in einer virtuellen Maschine ein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit sharepoint.stackexchange
scroll top