Powershell kann nicht zurückgegeben werden, wenn Ergebnisse von GCI mit ACL zurückgegeben werden

648
Rossaluss

Ich versuche, Powershell dazu zu bringen, Dateien in einem Verzeichnis aufzulisten, die älter als ein bestimmtes Datum sind und zu einem bestimmten Benutzer passen. Ich habe bis jetzt das folgende Skript erhalten, das mir alle Dateien gibt, die älter als ein bestimmtes Datum sind, und das Verzeichnis sowie dessen Besitzer aufführt:

$date=get-date  $age=$date.AddDays(-30)  ls '\\server\share\folder' -File -Recurse | ` where {$_.lastwritetime -lt "$age"} | ` select-object $_.fullname,{(Get-ACL $_.FullName).Owner} | ` ft -AutoSize 

Wenn ich jedoch versuche, einen zusätzlichen where-Parameter zu verwenden, um nur Dateien auszuwählen, die einem bestimmten Benutzer gehören, erhalte ich überhaupt keine Ergebnisse, obwohl ich weiß, dass ich dies tun sollte, basierend auf der Übereinstimmung, die ich zu erhalten versuche (siehe unten):

$date=get-date  $age=$date.AddDays(-30)  ls '\\server\share\folder' -File -Recurse | ` where ({$_.lastwritetime -lt "$age"} -and {{(get-acl $_.FullName).owner} -eq "domain\user"}) | ` select-object $_.fullname,{(Get-ACL $_.FullName).Owner} | ` ft -AutoSize 

Fehlt mir etwas? Kann ich den Befehl get-acl nicht in einer wo-Bedingung verwenden, wie ich es versucht habe?

Jede Hilfe wäre dankbar.

Vielen Dank

0

1 Antwort auf die Frage

0
Tim Ferrill

Das scheint zu funktionieren.

# Get the full list of files ls '\\server\share\folder' -File -Recurse | # Limit to files with the right age and owner where {($_.lastwritetime -lt "$age") -and ((get-acl $_.FullName).owner -eq "domain\user")} | # Add an Owner column to the object ForEach-Object {$_ | Add-Member -type NoteProperty -name Owner -value (Get-ACL $_.FullName).Owner -PassThru} | # Get just the filename and the owner select-object fullname, owner | # Format the output ft -AutoSize 

Auch ein paar Tipps.

  • Sie hatten das Escape-Zeichen am Ende jeder Zeile verwendet. Mit dem Pipe-Zeichen können Sie zur nächsten Zeile übergehen, so dass keine Flucht erforderlich war.
  • Außerdem Where-Objectnutzt {und }den Skriptblock zu definieren. Gruppierungsbedingungen innerhalb des Skriptblocks können mit (und durchgeführt werden ).
Du bist ein Genie. Ich danke dir sehr. Ich wusste nichts über den Befehl zum Hinzufügen eines Mitglieds. Danke auch für die anderen Tipps, ich werde jetzt meine anderen Skripte aufräumen :) Rossaluss vor 10 Jahren 0