none
Remove Item löscht Verzeichnis nicht RRS feed

  • Frage

  • Hallo,

    ich will meine alten Sicherungverzeichnisse löschen - leider scheitert es wohl an den Zugriffsrechten. Wie kann ich als Admin dem PS Script entsprechende Rechte geben?

    Grüße

    gupy 2000

    Aufruf:

    Get-ChildItem –Path  “F:\” –Recurse | Where-Object{$_.CreationTime –lt (Get-Date).AddDays(-20)} | Remove-Item -Recurse

    unerwünschtes Ergebnis:

    Get-ChildItem : Der Zugriff auf den Pfad "F:\archiv.2015_06_22_02_00_15\profiles\sf.V2" wurde verweigert.
    In Zeile:5 Zeichen:1
    + Get-ChildItem –Path  “F:\” –Recurse | Where-Object{$_.CreationTime –lt (Get-Date ...
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : PermissionDenied: (F:\archiv.2015_...\profiles\sf.V2:String) [Get-ChildItem], UnauthorizedAccessExc
       eption
        + FullyQualifiedErrorId : DirUnauthorizedAccessError,Microsoft.PowerShell.Commands.GetChildItemCommand

    Freitag, 3. Juli 2015 07:53

Antworten

  • Hallo,

    ich hoffe dir ist klar was dein Code macht? Du unterscheidest nicht zwischen Dateien und Ordnern, d.h. wenn er auf der ersten Ebene einen Ordner findet der aelter ist wie 20 Tage wuerde er ihn wegen dem -recurse (remove-item) platt machen, unabhaengig davon ob der Unterordner/Dateien entahelt die deutlich juenger sein koennten.

    Besser ist es von oben nach unten die Dateien zu loeschen, und danch rueckwaerts leere Verzeichnisse die durch die Dateiloeschungen entstanden sind.

    Das CMDLet remove-item kennt auch den Parameter -Force der das ein oder andere Zugriffsproblem loest.

    Du kannst die Powershell mit einem anderen Benutzer ausfuehren der die Rechte hat.

    Du kannst mit Set-ACL die Rechte auch anpassen, Besitz uebernehmen usw.

    Beste Gruesse
    brima



    Freitag, 3. Juli 2015 09:08

Alle Antworten

  • Hallo,

    ich hoffe dir ist klar was dein Code macht? Du unterscheidest nicht zwischen Dateien und Ordnern, d.h. wenn er auf der ersten Ebene einen Ordner findet der aelter ist wie 20 Tage wuerde er ihn wegen dem -recurse (remove-item) platt machen, unabhaengig davon ob der Unterordner/Dateien entahelt die deutlich juenger sein koennten.

    Besser ist es von oben nach unten die Dateien zu loeschen, und danch rueckwaerts leere Verzeichnisse die durch die Dateiloeschungen entstanden sind.

    Das CMDLet remove-item kennt auch den Parameter -Force der das ein oder andere Zugriffsproblem loest.

    Du kannst die Powershell mit einem anderen Benutzer ausfuehren der die Rechte hat.

    Du kannst mit Set-ACL die Rechte auch anpassen, Besitz uebernehmen usw.

    Beste Gruesse
    brima



    Freitag, 3. Juli 2015 09:08
  • Hallo,

    das -force bringt auch keine Besserung - werde wenn ich Luft habe mal Set-ACL anschauen.

    + So ganz klar ist es mir nicht was mein Code macht :-)

    Ich habe zwar ein bisserl was mit vba (vor 30 Jahren auch mit asm) usw. schon gemacht - Aber das was ich jetzt mache ist wohl eher ein bisschen basteln ohne Fangnetz. Bekam vom Chef vor 2 Monaten einen W7Server reingestellt, neues Programm kommt, mach mal ... usw (kleine Firma, kleines Netz mit 13 PCs)... Auf die PS bin ich vor ein paar Tagen gestoßen - kannte ich vorher noch nichtmal den Namen :) - Scheint aber eine Mischung aus DOS-Befehlen und Erweiterungen zu sein :)

    Im Moment kämpfe ich mit der Sicherungsautomation - jeden Tag kommt eine externe Platte (Mo-Fr) an den Server, darauf werden Nachts die Daten kopiert. Jeder Tag ein Ordner - jo und nach 20 Tagen will ich die alten Ordner löschen. Da ich bisher einfach ein p2p Netzwerk ohne echte Nutzerrechte hatte, konnte ich alles per .bat regeln.

    Grüße

    gupy2000

    Freitag, 3. Juli 2015 10:10
  • Hallo,

    wie geschrieben hat es noch nicht funktioniert. Nachdem meine Sicherungsplatten langsam voll werden habe ich heute weiter probiert.

    Ich konnte die Verzeichnisse auch nicht einfach löschen.

    Per Hand habe ich es jetzt "geschafft" mit Rechtsklick auf Verzeichnis -> Eigenschaften -> Sicherheit -> Erweitert -> Besitzer -> bearbeiten -> Besitzer ändern nach (mich anklicken, stehe schon als Besitzer drin) -> Hacken bei "Besitzer der Objekte und untergeordneten Container ersetzen" -> öfters OK

    Nun kann ich den Ordner löschen.

    Wie sag ich die Rechteänderung in meinem PS-Skript?

    Grüße

    gupy2000

    Freitag, 24. Juli 2015 08:30
  • Hallo,

    wie geschrieben kannst du das mit Set-Acl machen! Hast Du mal was versucht, scheinbar nein, dann click man folgenden Link an, dann findest du zahlreiche Beispiele. :-)

    http://www.lmgtfy.com/?q=powershell+change+owner

    Beste Gruesse
    brima

    Freitag, 24. Juli 2015 16:44