Jump to content

Mehrere Verzeichnisse und Unterverzeichnisse von der Suche ausschließen (PS)


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

vor 1 Minute schrieb imebro:

Gilt das dann auch für die Folderangabe (hier Laufwerk "S")?

Hast Du denn da auch eine Fehlermeldung bekommen?  :aha2:

 

Und übrigens .... wenn da nicht noch mehr in Deinem Script ist, was Du uns nicht zeigen magst, kannst Du das hier ... 

 

vor 39 Minuten schrieb imebro:

 

Add-Type -A System.IO.Compression
Add-Type -A System.IO.Compression.FileSystem

 

.... weglassen.

Und übermäßiges Kommentieren stört auch eher als es hilft:
Jeder, der der englishen Sprache ansatzweise mächtig ist, sieht, dass Du hier ein Verzeichnis zuweist.

 

vor 41 Minuten schrieb imebro:

 

# Verzeichnis
$folder = 'S:\'

 

... und dass das ein Datum ist ...

 

vor 42 Minuten schrieb imebro:

 

# Datum
$date = Get-Date '01.01.2012'

 

 

Link zu diesem Kommentar

Hallo,

 

ich werde es jetzt mal testen mit der tatsächlichen Löschdatei (zunächst noch nicht scharf geschaltet).

Bevor ich natürlich den LÖSCH-Vorgang starte, würde ich Dich/Euch bitten, nochmal auf den Code zu schauen.

Geändert habe ich lediglich die letzte Code-Zeile.

Soweit meine Recherchen stimmen, sollte es durch das "-whatif" zunächst mal noch nicht scharf geschaltet sein.

Entferne ich diesen Eintrag, dürfte die Löschung tatsächlich passieren... richtig? :rolleyes:

 

Hier der Code:

 

$folder = 'S:\'
$exclude = 'Archiv\\Datenschutz|Archiv\\Puetz\\Nachlässe|ADMIN\\S E C U R I T Y'
$date = Get-Date '01.01.2012'

# Nur Excel-Dokumente mit Änderungsdatum älter als $date löschen
Get-ChildItem $folder -File -Filter '*.xls?' -Recurse | 
    Where-Object { ($_.LastWriteTime -lt $date) -and (($_.Fullname -notmatch $exclude)) } | 
        Select-Object -ExpandProperty Fullname | 
            remove-item -Force -whatif

# Scharf schalten = "-whatif" entfernen!

 

Grüße,

imebro

Link zu diesem Kommentar
vor 4 Stunden schrieb imebro:

Bevor ich natürlich den LÖSCH-Vorgang starte, würde ich Dich/Euch bitten, nochmal auf den Code zu schauen.

 

Das hier ist primär ein Forum für IT-Profis. Es wird also erwartet, dass Du auch selbst aktiv wirst. Wir werden hier also nicht jede noch so kleine Änderung am Code ausführlich kommentieren, damit Du ein besseres Gefühl dabei hast - noch dazu, wo Du ja sowieso kein Interesse an IT hast .... :aha2:

 

vor 4 Stunden schrieb imebro:

Geändert habe ich lediglich die letzte Code-Zeile.

Soweit meine Recherchen stimmen, sollte es durch das "-whatif" zunächst mal noch nicht scharf geschaltet sein.

Entferne ich diesen Eintrag, dürfte die Löschung tatsächlich passieren... richtig? :rolleyes:

 

Gibt es einen Grund, den Quellen, die Du für Deine Recherchen benutzt hast, zu misstrauen?  Wenn Du Dir unsicher bist, schnappst Du Dir ein Test-Verzeichnis mit Test-Dateien und testest damit. Wenn die Tests erfolgreich waren und Du Dir dann sicher bist, dass es so funktioniert, wie gewünscht, überträgst Du das Ganze in Deine Produktiv-Umgebung - fertig. Wir machen das auch nicht anders.

 

Übrigens - ein funktionierendes Backup der Daten sollte man im Zweifel sowieso immer bereit haben.  ;-)   Kein Backup - Kein Pardon.  :pfui1::cool:

bearbeitet von BOfH_666
Link zu diesem Kommentar

Hallo @BOfH_666

 

Zunächst einmal danke für Deine Infos.

 

Mir war nicht bewußt, dass es sich beim "MCSE-Board" um ein Forum handelt, welches primär für IT-Profis ist.

Ich habe mir jetzt mal das Forum angeschaut, sowie auch die Forenregeln und nirgendwo einen Hinweis darauf gefunden.

Für mich wirkt es wie ein öffentliches Forum, in dem jeder seine Fragen stellen kann.

 

Wieso Du annimmst, dass ich ein IT-Profi sei, der kein Interesse an IT hat, erschließt sich mir nicht. Ich habe sowas nie geschrieben.

Ich habe lediglich hier - sehr freundlich - nach Hilfe gefragt und diese ja auch erhalten. Allerdings meist mit einem unterschwellig negativen Kommentar von Dir, was ich nicht wirklich gut finde.

 

Zu mir:

Ich bin alles Andere, als ein IT-Profi.

Im Gegenteil!! Ich habe situationsbedingt den EDV-Bereich auf der Arbeit übernehmen müssen, da unser IT-ler uns vor ca. 2 Jahren verlassen hat.

Ich war die einzige Person, die sich eben ein bisschen mit EDV auskennt. Ich habe keinerlei IT-Ausbildung oder irgendwelche Lehrgänge besucht!! Dazu wäre auch keine Zeit (und wahrscheinlich auch kein Geld da).

Daher habe ich natürlich entsprechende Fragen, die ich dann in einem passenden Forum, wie eben dem "MCSE-Board" stelle.

Die IT ist nicht mein Hauptjob hier. Ich mache eigentlich etwas völlig anderes. Die IT-Fragen kommen jedoch an mich und ich muss versuchen, sie irgendwie zu lösen.

Leider sind wir eine sehr kleine Institution und haben somit auch nicht den finanziellen Background, um hier Unterstützung durch eine IT-Firma stemmen zu können.

 

Vielleicht hast Du ja nun ein bisschen mehr Verständnis für meine Fragen.

Es ist leider so, dass ich vom Arbeitsumfang her einfach nicht die Zeit habe, mir lange irgendwelche Testumgebungen zurecht zu bauen.

Daher würde ich mich freuen, wenn man mir hier weiterhilft, was ja bisher auch schon sehr gut geschah.

 

Danke und Grüße,

imebro

bearbeitet von imebro
Link zu diesem Kommentar

Moin,

ich habe auch keine Ahnung von Scripting, sowas lass ich immer Leute machen, die sich mit sowas auskennen.

 

Und als Empfehlung von mir: suche dir in der Nähe einen kompetenten Dienstleister, der dich bei solchen Dingen tatkräftig unterstützen kann.

 

Spätestens wenn es nicht um scripting geht und eventuell was abstürzt hast du unter Umständen ein Problem.

Solche Fragen können prima im Rahmen eines Workshops geklärt werden, vielleicht gibt es sogar ganz andere Ansätze.

 

My 2 Cents…

 

:-)

Link zu diesem Kommentar

@Nobbyaushb

 

Danke für Deinen Beitrag und die Tipps.

 

Aber wie ich ja bereits geschrieben habe, sind wir nur eine SEHR kleine Institution, ohne den entspr. finanziellen Background.

Darüber hinaus besteht meine eigentliche Aufgabe ja nicht aus IT.

Hier geht es lediglich um ein kleines Lösch-Script und ich habe ja schon viel selbst recherchiert.

 

Ich kann nicht so ganz nachvollziehen, warum mir als Forenmitglied die Hilfe nun plötzlich so erschwert wird.

So wie ich es aus vielen anderen Foren kenne, in denen ich privat tätig bin, wird dort gerne geholfen, bis eben eine gute Lösung gefunden ist.

Ich will hier nichts unterstellen!! Aber meine gestellte letzte Frage zu beantworten, dürfte doch jetzt nicht das große Problem sein... Es fühlt sich jedoch so an, als ob es hier um regelrechte Erziehungsmaßnahmen geht. Sowas kann ich kaum noch nachvollziehen. Das hier ist ein öffentliches Hilfe-Forum und ich habe nicht nach Belehrungen gefragt, sondern einfach um Hilfe bei einem Problem gebeten.

 

Danke und Grüße,

imebro

bearbeitet von imebro
Link zu diesem Kommentar
vor einer Stunde schrieb imebro:

Ich kann nicht so ganz nachvollziehen, warum mir als Forenmitglied die Hilfe nun plötzlich so erschwert wird.

Dann ist es vielleicht einmal wieder an der Zeit, das Verhältnis zwischen Hilfesuchenden und Helfenden in einem IT-Forum für beruflich bedingte Fragen "an die Wand zu werfen":

  • Du suchst Antworten auf eine Frage, die in Deinem Job aufgetreten ist. Ergo, Du erledigst diese Suche in Deiner Arbeitszeit. Wenn Dein Arbeitgeber das anders sieht, ist es Zeit für einen neuen.
  • Darum kannst Du das übrigens nicht mit dem Gartenfreunde-Forum vergleichen, in dem alle privat unterwegs sind.
  • Die Helfenden erledigen die Hilfe hingegen in Ihrer Freizeit. Um es ganz plastisch zu machen, sie helfen Dir bei Deinem Job statt dem eigenen Kind bei den Hausaufgaben.
  • Daher musst Du alles dafür tun, die Zeit der Helfenden zu schonen und nicht umgekehrt. Und das kannst Du tun, indem Du dir die Basics dessen, worum es geht, selber aneignest, vorher recherchierst, selbst herumprobierst usw.
  • Wie klein und arm Deine Institution ist, spielt dabei keine Rolle. Keine Arme >> keine Kekse. Wenn die Organisation klein, arm, aber gemeinnützig ist, kannst Du von Profis mitunter gegen Spendenquittung pro bono-Hilfe erhalten. Aber dann musst Du danach fragen und nicht nach Fortbildung in Grundlagen. Speziell zu PowerShell ist schon so viel im frei durchsuchbaren Internet geschrieben worden, dass man zu recht annehmen kann, der Fragende ist zu faul zum Googeln, wenn Grundlagen fehlen.

Make sense?

Link zu diesem Kommentar

Hallo,

 

ruhig Blut, es geht hier nicht darum Besucher, Gäste oder Mitglieder abzuweisen.

 

Wir bieten als "IT Pro Community" Hilfe zur Selbsthilfe. Das hat mehrere Gründe:

Sicherheit

1. Aus der Ferne kann man nur schwerlich beurteilen, welche Umgebung ein Fragesteller vor sich hat. Das kann nur der Fragesteller bzw. das jeweilige Mitglied beurteilen, das die Umgebung betreut und/oder dort arbeitet. Daher sind Ratschläge aus der Ferne mit Vorsicht zu genießen und daher lehnen sich die Helfer nicht aus dem Fenster. Das könnte sonst zu haarsträubenden Aktionen führen...

 

Nachhaltigkeit

2. Wir helfen gerne geistig aufs Fahrrad - Fahrradfahren muss aber jeder selbst (siehe unter anderem wegen 1.)

3.  "Gib einem Mann/einer Frau einen Fisch und du ernährst ihn/sie für einen Tag. Lehre einem Mann/einer Frau zu fischen und du ernährst ihn/sie für sein Leben."

 

Ich glaube das Prinzip ist klar: Ohne, dass sich die Fragesteller mit dem Thema beschäftigen, können wir nicht seriös aus der Ferne helfen.

 

> Wer will, versucht es bitte nochmal mit Hilfestellung.
> Wer zu wenig Mitarbeit als Schwierigkeit sieht, bitte zurückhalten!

 

Und nun bitte zurück zum Thema. Danke!

 

 

Link zu diesem Kommentar

@Lian

Schön, dass es auch noch Verständnis gibt...

 

Zur Mitarbeit:

Ich habe ja entsprechend mitgearbeitet und auch einen weiteren Code-Vorschlag selbst erstellt.

Den wollte ich halt nur mal hier vorstellen mit der Frage, ob dieser Code so ok ist.

Ich will halt auch keinen Code, der Dateien löscht, einfach mal so ausprobieren, was verständlich sein dürfte :-)

 

Am Ende geht es mir lediglich noch darum, wie ich den ja bereits funktionierenden SUCH-Code in den LÖSCH-Code umwandeln kann.

Wie gesagt - hierzu habe ich bereits meinen Code hochgeladen.

Und dann eben noch die Frage, wie ich aus dem Filter für die Suche, bzw. Löschung von Dateien ".doc" erweitere auf ".bak" (es sollen also alle .doc und .bak Dateien gelöscht werden).

Das dürfte ja nun wirklich kein so großes Problem darstellen und erst recht nicht zu "haarsträubenden Aktionen" (siehe Dein Punkt 1) führen.

Und auch dazu hatte ich ja bereits einen Code in meinen Thread eingefügt.

 

Freue mich selbstverständlich über kompetente Hilfe für den noch kleinen Rest :-)

 

Zur Vereinfachung hier nochmal der von mir erweiterte Code mit dem Versuch, die ".doc" und ".bak" Dateien ebenso zu löschen:

 

$folder = 'S:\'
$filter = '*.doc?, *.bak?'
$exclude = 'Archiv\\Datenschutz|Archiv\\Puetz\\Nachlässe|ADMIN\\S E C U R I T Y'
$date = Get-Date '01.01.2012'

# Nur Word-Dokumente mit Änderungsdatum älter als $date suchen
Get-ChildItem $folder -File $_ -Filter $filter | -Recurse | 
    Where-Object { ($_.LastWriteTime -lt $date) -and (($_.Fullname -notmatch $exclude)) } | 
        Select-Object -ExpandProperty Fullname | 
            remove-item -Force -whatif

 

In diesem Code habe ich oben zusätzlich "$filter" eingesetzt und im Code weiter unten dann den Zusatz "$_ -Filter $filter".

Und ich muss wohl am Ende lediglich das "-whatif" entfernen, um tatsächlich zu löschen...

 

Danke und schöne Grüße,

imebro

bearbeitet von imebro
Link zu diesem Kommentar

Warum probierst du deinen Code nicht einfach aus. 

 

Lies die Hilfe zu remove-item. Danach solltest du wissen was das macht.

 

Wenn du ganz sicher gehen willst und dem "whatif" nicht traust, dann lass das "remove-item" weg und schaue was das Ergebnis ist. 

 

Niemand kennt deine Verzeichnisstruktur. Am Ende musst sowieso du entscheiden, ob du die richtigen Dateien zum Löschen ausgewählt hast.

Link zu diesem Kommentar

Moin,

 

in diesem Fall musst du AFAIK mit "-Include" anstelle "-Filter" arbeiten. Das bringt dann aber mit, dass du mit "$folder = 'S:\*'" suchen musst. Alternativ loope die verschiedenen Dateiendungen per "foreach()" durch.

 

$folder = 'S:\*'
$include = '*.doc?', '*.bak?'
$exclude = 'Archiv\\Datenschutz|Archiv\\Puetz\\Nachlässe|ADMIN\\S E C U R I T Y'
$date = Get-Date '01.01.2012'

# Nur Word-Dokumente mit Änderungsdatum älter als $date suchen
Get-ChildItem $folder -File -Include $include -Recurse | 
    Where-Object { ($_.LastWriteTime -lt $date) -and (($_.Fullname -notmatch $exclude)) } | 
        Remove-Item -Force -whatif


# -------------------------------------------

$folder = 'S:\'
$filter = '*.doc?', '*.bak?'
$exclude = 'Archiv\\Datenschutz|Archiv\\Puetz\\Nachlässe|ADMIN\\S E C U R I T Y'
$date = Get-Date '01.01.2012'

# Nur Word-Dokumente mit Änderungsdatum älter als $date suchen
foreach($f in $filter){
  Get-ChildItem $folder -File -Filter $f -Recurse | 
      Where-Object { ($_.LastWriteTime -lt $date) -and (($_.Fullname -notmatch $exclude)) } | 
          Remove-Item -Force -whatif
}

 

Gruß

Jan

 

BTW.: Auf das "Select-Object" kannst du verzichten, da du ja ein Objekt bekommst, welches du löscht.

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...