Hallo BOfH_666,
tut mir leid für mein missverständliches Ausdrücken. Der Code aus dem ersten Post funktioniert. Die vielen nicht funktionierenden Versionen wollte jetzt nicht alle posten. Bis auf Zeile 5 (natürlich ohne die Nummerierung) funktioniert das Script. Ich möchte jetzt eine Ausgabe erzeugen mit den Eigenschaften FullName, LastWriteTime (aus dem Get-ChildItem (Objekt?)) und Owner (aus dem Get-ACL (Objekt?))
Als Beispiel dieser (letzter) gescheiterte Versuch
(1) get-childitem -Path "U:\Eigene Dateien\Privat" -Recurse -filter *.pdf -PipelineVariable 'mDatei'|
(2) Where-Object {$_.LastWriteTime -gt (Get-Date).AddDays(-300)} |
(3) Get-acl |
(4) Where-Object {$_.owner -like '*q0219005*'} |
(5) Select-Object $mDatei.FullName, $mDatei.LastWriteTime, owner
Fehler:
Select-Object : Der Wert eines Parameters war NULL. Einer der folgenden Typen wurde erwartet: {System.String,
System.Management.Automation.ScriptBlock}.
In Zeile:5 Zeichen:17
+ ... Select-Object $mDatei.FullName, $mDatei.LastWriteTime, ow ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Select-Object], NotSupportedException
+ FullyQualifiedErrorId : DictionaryKeyUnknownType,Microsoft.PowerShell.Commands.SelectObjectCommand
Vielleicht beschreibe ich mein Problem so: Ich habe noch Verständnisprobleme mit dem Ansprechen einer Variable. $_. ist z. B. eine Besonderheit von dem where-object. Ich glaube auch zu wissen, dass immer nur ein Objekt über die Pipe "wandert".
Ich hoffte, das würde vielleicht an der Schreibweise liegen ("Objektorientiert"?). Ich fürchte aber, dass wenn "ich" in Zeile (5) angekommen bin, ich auf das Objekt in Zeile (1) nicht mehr zugreifen kann. Deshalb habe ich auch angefangen mich für Variablen zu interessieren - bislang aber 0 Erfolg.
Was ich bisher an Tipps & Ticks gefunden habe, hört da auf, wo es spannend wird (für mich). Vielleicht kannst Du mich in die richtige Richtung schubsen?
Ich kann die Ausgabe von Get-Childitem in einer Variable speichern und ich kann die Ausgabe von Get-ACL in einer Variable speichern. Beides auch anzeigen lassen. Die nächste Variante wäre nun mich zu entscheiden, welche Liste ich in einer Variable speichern möchte und die dann mit einer Schleife abzuarbeiten. Ich wollte es aber (aus meiner Sicht) nicht "so komplex" werden lassen. Mir würde es schon reichen wenn Du zu meinem fehlerhaften Script sagst: Schreib es so und so oder auch Vergiss es, es geht nur mit einer Schleife.
Meine Dateien bekomme ich ja gelöscht. Ich möchte doch vorher nur eine "schöne" Anzeige erstellen der Dateien, die gelöscht werden ...
Vielen Dank für Deine Zeit & Geduld
Markus
Ich Dösel!
Vielen Dank für Deine Lösung. Die funktioniert natürlich, wenn der Fragende auch richtig liest und kopiert.
Du bist ein Guter!
Markus