Frage

Tut mir zunächst, wenn dies eine offensichtliche Frage ist, habe ich viel gesucht, aber die Lösung nicht finden.

Wenn ich eine öffne spsite In PowerShell wie folgt:

 $spsite = Get-SPSite "https://adress"

Und dann versuche ich, alle Netze so zu bekommen

 $spsite.allwebs

Ich bekomme den folgenden Fehler:

$spsite.allwebs : Exception has been thrown by the target of an invocation
+ CategoryInfo          : NotSpecified: (:) [], TargetInvocationExcept
+ FullyQualifiedErrorId : System.Reflection.TargetInvocationException

Ich verstehe nicht, was ich falsch mache, auf meinem anderen SP -Server funktioniert das gut.

Danke im Voraus,

Bearbeiten Um mein Problem klarer zu machen, werde ich hier 2 Screenshots veröffentlichen sp_admin Und ich bin primärer Administrator in der Site -Sammlung.

enter image description here

Hier sehen Sie die Befehle, die ich ausführte und den Fehler, den ich bekomme.

enter image description here

Bearbeiten 2 $spsite.gettype Ausgang:

PS C:\Users\sp_admin> $spsite.GetType()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     False    SPSite                                   System.Object
War es hilfreich?

Lösung

Ich denke, dies ist ein unkompliziertes Problem. Mit Get-Sspite können Sie ein Sp-Ort-Objekt (... mindestens ein teilweise) abrufen, ohne Berechtigungen für diese Site-Sammlung zu haben. Wenn Sie jedoch versuchen, auf die AllWebs -Sammlung zuzugreifen, macht sie einen Fehler.

Um dies zu validieren, erstelle ich eine neue Site -Sammlung und habe jemanden als mich zu den primären und sekundären Site -Sammlungsadministern gemacht. Ich habe dann Get-sspite gegen diese Site-Sammlung durchgeführt und es gab das Sp-Site-Objekt zurück, aber wenn ich auf die AllWebs-Sammlung zugreife, warf sie genau den gleichen Fehler wie oben.

Andere Tipps

Alle Berechtigungen, die erforderlich sind, um diesen Fehler zu korrigieren:

  • Site -Sammlung -Administrator auf der Sp -Site (ob über zentrale Administrator- oder Standorteinstellungen angegeben)
  • PowerShell Scripting Admin: add-spshelladmin domain\username
  • PowerShell Scripting Admin in den Inhaltsdatenbanken: get-spcontentdatabase | add-spshelladmin domain\username

Beachten Sie, dass die Befehle von PowerShell vom Farmkonto (oder von jemand anderem, der diese Berechtigungen bereits hat), betrieben werden muss.

Die Syntax ist korrekt. Greifen Sie mit dem Benutzer, der die PowerShell -Eingabeaufforderung ausführt, auf alle Websites in der Site -Sammlung zu? Könnte ein Zugang verweigert, der auf einer der Websites verweigert wird ...

Dieser Code hat für mich funktioniert!

[Microsoft.SharePoint.SPSecurity]::RunWithElevatedPrivileges({
$Site = Get-SPSite $siteUrl
Foreach ($web in $Site.AllWebs)
{
#do something..
$web.Dispose()
}   
$Site.Dispose()
});  

Sehen https://stackoverflow.com/questions/13142327/cannot-get-basic-sharepoint-powerShell-script-to-run

Ich fand diesen Ansatz sehr zuverlässig, da die Fehlermeldung auch aus der Site aus der zentralen Verwaltung resultieren kann. Die Erhöhung der Berechtigungen in diesem Szenario ergibt den Fehler. Hier ist, was für mich funktioniert hat.

try{
  $allWebs = ($site | Select-Object -ExpandProperty AllWebs)
  foreach($web in $allWebs){
    # do something
  }
} catch {
 if($_.Exception.Message -match "Access to this Web site has been blocked."){
    Write-Warning "`nSite Collection Locked: '{0}'`n" -f $site.Url
  } else {
    # something else is needed like script access to db or site collection full control
  }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit sharepoint.stackexchange
scroll top