SharePointCommunity
Die deutschsprachige Community für SharePoint, Microsoft 365, Teams, Yammer und mit Azure

Sponsored by

Willkommen im Forum Archiv.
Einträge sind hier nicht mehr möglich, aber der Bestand von 12 Jahren SharePoint-Wissen ist hier recherchierbar.




Leere Ordner in Liste löschen PowerShell

Unbeantwortet Dieser Beitrag hat 5 Antworten

Ohne Rang
142 Beiträge
Andman erstellt 14 Dez. 2016 08:52
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo!

Was mache ich flasch?
Ich möchte leere Ordner in einer Liste löschen.
Er findet sie, mag sie aber nicht löschen.

$web = Get-SPWeb http://seite.de
$list = $web.Lists["ItemReferences"]

    foreach($folder in $list.Folders)
    {       
      if($folder.Folder.ItemCount -eq 0)
      {
       Write-Host Empty folder at $folder.Url
       $folder.Delete()
      }       
    }

Alle Antworten

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 14 Dez. 2016 09:31
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Das ist der Klassiker ;-) Man kann in .NET nicht mit einer foreach-Schleife über etwas iterieren und es dabei löschen. Das sollte Dir aber eine entsprechende Fehlermeldung mitteilen.

Nimm stattdessen eine for-Schleife. Und zähle dabei von oben nach unten, sonst bekommst Du nach der Hälfte der Elemente einen Fehler.

$folders = $list.Folders
for ($i = $folders.Count - 1; $i -ge 0; $i--) {
 $folder = $folders[$i]
}

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
142 Beiträge
Andman Als Antwort am 14 Dez. 2016 11:03
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ok.

$web = Get-SPWeb http://seite.de
$list = $web.Lists["ItemReferences"]

    foreach($folder in $list.Folders)
    {       
      if($folder.Folder.ItemCount -eq 0)
      {
       Write-Host Empty folder at $folder.Url
       $list.Folders.DeleteItemById($folder.ID)
      }       
    }

Auf unserem Testsystem ging das auch. zumindest sind die meisten leeren Ordner weg.

Auf dem Echtsystem bekomm ich aber noch nen Fehler zwecks Schwellenwert. Kann man den in PowerShell irgendwie umgehen? oder muss ich da erst noch was konfigurieren.

Der versuchte Vorgang ist unzulässig, weil er den vom Administrator erzwungenen
Listenansicht-Schwellenwert überschreitet

Ohne Rang
929 Beiträge
Thomas Östreich Als Antwort am 14 Dez. 2016 11:17
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Mit genügend Rechten kannst du diesen vorübergehend wie folgt ausschalten;

$list.EnableThrottling =$false

$list.Update()

...

$list.EnableThrottling = $true

$list.Update()

Ohne Rang
142 Beiträge
Andman Als Antwort am 14 Dez. 2016 11:23
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ok. Danke :)

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 14 Dez. 2016 13:38
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Liefere doch bitte beim nächsten Mal gleich die Fehlermeldung mit...

Viele Grüße
Andi
af @ evocom de
Blog