hannes2021
Goto Top

Powershell viele Ordner über Netzwerk löschen

Guten Abend zusammen,

steh gerade vor einem massiven Problem mit powershell bei Windows 10.

In einer Ordner Struktur sollen diverse Ordner und das nicht gerade wenig gelöscht werden.

$lw  ="w"  
$pfad  ="\\server1\data  
$folders = "Ordner1" , "Ordner2"  

New-PSDrive –Name “$lw” –PSProvider FileSystem –Root “$pfad$lw:

Remove-Item $folders -Recurse -Force -WhatIf

Remove-PSDrive -Name $lw

Das war mein Ansatz aber das geht nur immer mit einem Ordner.

Die Anzahl kann von null bis in die 1000 gehen.

Hoffe ihr könnt mir helfen.

Besten Dank

Content-ID: 719144916

Url: https://administrator.de/contentid/719144916

Ausgedruckt am: 22.11.2024 um 12:11 Uhr

em-pie
em-pie 17.06.2021 um 22:02:29 Uhr
Goto Top
Moin,

sollen ALLE Ordner unterhalb von \\server1\data geleert werden?
Wenn Ja, sollen die Ordner dann bestehen bleiben oder mit entfernt werden?

Ggf hilft dir das hier dann:
$pfad  = "\\server\data"  
Get-ChildItem $pfad -Recurse | ForEach { Remove-Item $_.FullName -Force -Recurse }

Hilfe findest du hier ganz gut:
https://www.itechguides.com/powershell-delete-folder-or-file/

Gruß
em-pie
Hannes2021
Hannes2021 17.06.2021 um 22:08:29 Uhr
Goto Top
Hi danke erstmal
Link check ich morgen.

Nein, in der Tag sollen nur angegebene Ordner und deren Inhalt gelöscht werden.

Bei meiner Vorgehensweise macht er es zwar aber kann nur einen Ordner definieren.

Mfg
em-pie
em-pie 17.06.2021 aktualisiert um 22:18:32 Uhr
Goto Top
Na dann packe deine Ordner in ein Array und arbeite mit "foreach"

$pfad  = "\\server\data"  
$folders = @("Ordner1", "Ordner2", "Ordner8")  

foreach($fld in $folders){

    Write-Host $pfad + "\" + $fld  
    Remove-Item $pfad$fld -Force -Recurse -WhatIf
}

oder du liest eine Spezielle Datei aus, in der alle Ordner enthalten sind und fackelst das dann so ab.
Hannes2021
Hannes2021 17.06.2021 um 22:24:33 Uhr
Goto Top
Super danke dir

Teste das morgen

Ganz lieben dank

Hab dazu aber noch fragen:
Whatif heisst doch nur simulation oder?

Was was bezieht sich $fld?
em-pie
em-pie 17.06.2021 um 22:29:04 Uhr
Goto Top
in der Variablen $folders stecken ja einzelne Elemente.
Diese einzelnen Elemente holt man sich mit jedem foreach-Durchlauf in eine eigene Variable - hier $fld.
Ich hätte auch $folder oder $pusemuckel nehmen können.

Mit dem -WhatIf hast du ansonsten recht
colinardo
colinardo 17.06.2021, aktualisiert am 18.06.2021 um 12:50:51 Uhr
Goto Top
Servus.
Oder ohne extra Schleife mit -Include
$pfad = '\\server1\data'  
$folders = 'Ordner1', 'Ordner2'  
del $pfad\* -Include $folders -recurse -force -verbose
bzw. gleich mit Auslesen der Ordnernamen aus einer Textdatei
$pfad = '\\server1\data'  
$folders = gc 'd:\folders.txt'  
del $pfad\* -Include $folders -recurse -force -verbose
Und noch eine Variante
$pfad = '\\server1\data'  
$folders = gc 'd:\folders.txt'  
ls $pfad -Directory -Force | ?{$_.Name -in $folders} | del -Force -recurse -Verbose
Grüße Uwe
cykes
cykes 18.06.2021 aktualisiert um 06:32:13 Uhr
Goto Top
Moin,

klingt irgendwie nach Hausaufgabe face-wink

Die Anzahl [Ordner] kann von null bis in die 1000 gehen.
Die m.M.n viel entscheidendere Frage wäre, anhand welcher Kriterien werden die zu löschenden Ordner ausgewählt? Du willst ja nicht >1000 Ordnernamen in ein Array oder eine Textdatei abtippen oder?
Also fehlen Informationen, haben die zu löschenden Ordner eine bestimmte (eindeutige) Namensstruktur oder (eindeutigen) Inhalt? Oder ein bestimmtes Erstellungs- oder Änderungsdatum oder sonst ein Kriterium, was sie von den zu behaltenden Ordnern unterscheidet?

Erst dann kann man überhaupt mit der Wahl der Mittel anfangen.

Gruß

cykes
em-pie
em-pie 18.06.2021 um 07:08:10 Uhr
Goto Top
Du machst gerade den Azubi arbeitslos face-big-smile
cykes
cykes 18.06.2021 um 07:26:43 Uhr
Goto Top
Ich kann damit leben face-wink

Aber bevor der Azubi sich vertippt und ein Desaster auslöst, lieber gleich etwas strukturierter an die Sache herangehen - kann auch nicht schaden.
Hannes2021
Hannes2021 18.06.2021 aktualisiert um 07:46:16 Uhr
Goto Top
Moin,

Bin kein Azubi davon mal abgesehen. Komme aus einem anderen Bereich und powershell ist etwas Neuland. Bash Dateien sind eben komplett anders.

Aber zu den Fragen:

Nein es gibt keine eindeutigen Nenner.
Die Ordner wurden manuell herausgesucht und sind in der Regel nicht leer. Können somit voll oder leer sein. Die Namen der Ordner sind alphabetisch. Da ist alles möglich.

VG
cykes
cykes 18.06.2021 um 08:37:56 Uhr
Goto Top
Gehst Du die Ordner händisch durch und entscheidest, kommt auf die Liste oder eben nicht? Irgendein Auswahlkriterium muss es also geben, ggf. ist es komplex und nicht so einfach in Powershell übertragbar. Aber so ist das ja recht fehleranfällig.
Hannes2021
Hannes2021 18.06.2021 aktualisiert um 10:05:39 Uhr
Goto Top
Mit dem Ansatz in die txt ist eine Klasse und saubere Lösung. Jedoch funktioniert das noch nicht so ganz.

Es werden Unterverzeichnisse gelöscht, die garnicht betroffen sind und andere erst garnicht gelöscht.

Die Daten wurden manuell über mehrere Anwendungen Instanzen und Excel Dateien ausgewertet. Somit liegen diese als Excel Daten vor.
em-pie
em-pie 18.06.2021 um 12:08:18 Uhr
Goto Top
Moin,

<OT>
bei einem Update deines Posts bekommen wir nicht mit, dass du ihn aktualisiert hast. Wenn du einen Test ankündisgt und später dann das Ergebnis mitteilst, besser als neue Antwort posten face-smile
</OT>

Zu deinem Problem: Bitte poste einmal dein Script und (Auszugsweise) die folder.txt

Obige Ansätze haben hier bei mir funktioniert 8 Ordner unter c:\test 5 in der folder.txt und gelöscht wurden auch nur diese.
colinardo
colinardo 18.06.2021 aktualisiert um 12:24:22 Uhr
Goto Top
Obige Ansätze haben hier bei mir funktioniert 8 Ordner unter c:\test 5 in der folder.txt und gelöscht wurden auch nur diese.
Dito bei mir ebenso problemlos

screenshot

screenshot_2

Demo auch online
https://tio.run/##PYvBCsIwEETv@YqlFAJiKtVe/QB/w2RKS1dXNql@fgx76OXNDLz5yA ...
148656
148656 18.06.2021 um 12:51:03 Uhr
Goto Top
<OT>
Moin ihr "Profi-Scripter",
lange kann ich Mich nicht mehr zurückhalten!
Ist es für den Lernerfolg wirklich Hilfreich, wenn man einem User die Arbeit abnimmt?
Wäre es nicht von Vorteil, erst zu schauen wo steht der User und wo sind seine Wissenslücken?
Ich freue mich schon auf den nächsten Beitrag des Users "Hab hier ein Powershell-Script das geändert werden muss."

Gruß
C.C.

</OT>
colinardo
colinardo 18.06.2021 aktualisiert um 13:09:21 Uhr
Goto Top
Zitat von @148656:
lange kann ich Mich nicht mehr zurückhalten!
Solltest du vielleicht mal öfters face-wink. Zu viele Off-Topics nerven auf die Dauer auch.
Ist es für den Lernerfolg wirklich Hilfreich, wenn man einem User die Arbeit abnimmt?
Ein Forum kann auf mehrfache Weise hilfreich sein, man kann auch anhand von Beispielen lernen, wenn man willens ist. Ob das der TO ist liegt nicht in unserem Einflussbereich.
Wäre es nicht von Vorteil, erst zu schauen wo steht der User und wo sind seine Wissenslücken?
Kannst du gerne machen, dann landet aber jeder Thread bei mind. 20 Posts.
Ich freue mich schon auf den nächsten Beitrag des Users "Hab hier ein Powershell-Script das geändert werden muss."
Es zwingt dich keiner zu antworten. Es reicht wenn mind. einer aus einer Antwort hilfreiches Wissen ziehen kann. Ob das der TO tut oder nicht liegt in seinem Einflussbereich. Nachschlage-Fähigkeit lege ich als Grundvoraussetzung an wenn man eine Frage in einem Admin-Forum stellt.

Grüße Uwe



Und für die Lernwilligen unter den TOs poste ich immer gerne meine Linksammlung

back-to-topPowershell Leitfaden für Anfänger

back-to-topPflichtlektüre
back-to-topErweiterte Grundlagen
back-to-topZusätzliche Ressourcen
148656
148656 18.06.2021 um 13:19:00 Uhr
Goto Top
Moin Uwe,
um es abzukürzen.
Solltest du vielleicht mal öfters
Nö, weil
Es reicht wenn mind. einer aus einer Antwort hilfreiches Wissen ziehen kann.

Gruß
C.C.