File-Share-Server bereinigen

443
user931101

Ich habe versucht, ein PowerShell-Skript zu erstellen, das alle Dateien und Ordner, deren Erstellungsdatum und Datum des letzten Zugriffs, die Größe in MB und, falls möglich, die letzte Person, die darauf zugegriffen hat, mit einem Export in eine CSV-Datei auflistet.

Ich habe ein paar Skripte getestet und sogar Hilfe vom anderen Post erhalten, aber es werden nicht alle Dateien abgerufen.

Dies ist das Skript, das ich gerade ausführte:

 Get-ChildItem c:\Users\iceledon -Recurse -ErrorAction SilentlyContinue | Where-Object {$_.LastWriteTime -gt (Get-Date).AddDays(-365)} | Export-Csv "C:\Users\iceledon\Desktop\files.csv" -NoTypeInformation 
0

1 Antwort auf die Frage

0
postanote

Dies ist alles, was Sie aus den Dateieigenschaften erhalten können. der ersten ausgewählten Datei

# This is all you can get from file properties. of the first file selected (Get-ChildItem 'd:\temp\*.txt')[0] | Select-Object -Property *  # Results  PSPath : Microsoft.PowerShell.Core\FileSystem::D:\temp\1 passwordchangelog.txt PSParentPath : Microsoft.PowerShell.Core\FileSystem::D:\temp PSChildName : 1 passwordchangelog.txt PSDrive : D PSProvider : Microsoft.PowerShell.Core\FileSystem PSIsContainer : False Mode : -a---- VersionInfo : File: D:\temp\1 passwordchangelog.txt InternalName:  OriginalFilename:  FileVersion:  FileDescription:  Product:  ProductVersion:  Debug: False Patched: False PreRelease: False PrivateBuild: False SpecialBuild: False Language:   BaseName : 1 passwordchangelog Target : {} LinkType :  Name : 1 passwordchangelog.txt Length : 24 DirectoryName : D:\temp Directory : D:\temp IsReadOnly : False Exists : True FullName : D:\temp\1 passwordchangelog.txt Extension : .txt CreationTime : 10-Jul-18 16:30:22 CreationTimeUtc : 10-Jul-18 23:30:22 LastAccessTime : 10-Jul-18 16:30:22 LastAccessTimeUtc : 10-Jul-18 23:30:22 LastWriteTime : 06-Jul-18 22:16:24 LastWriteTimeUtc : 07-Jul-18 05:16:24 Attributes : Archive 

Wie Sie aus den obigen Eigenschaften des Dateiobjekts sehen können. Es ist nicht bekannt, wer zuletzt darauf zugegriffen hat. Zuletzt müssen Sie die Länge in KB, MB usw. konvertieren.

Also machen Sie das ... (verwenden Sie einfach nicht die Format-Tabelle für die Ausgabe. Dies gilt nur für den Bildschirm.)

Get-ChildItem 'd:\temp' -Recurse -ErrorAction SilentlyContinue ` | Where-Object {$_.LastWriteTime -gt (Get-Date).AddDays(-365)} ` | Select FullName,CreationTime,LastAccessTime, @” -f ($_.length/1KB)}}, @” -f ($_.length/1MB)}} ` | Sort-Object -Property LastAccessTime ` | Format-Table -AutoSize  FullName CreationTime LastAccessTime Size(kb) Size(mb) -------- ------------ -------------- -------- -------- D:\temp\4 passwordchangelog.txt 05-Jul-18 13:15:04 05-Jul-18 13:15:04 0.02 0.00  D:\temp\1 passwordchangelog.txt 10-Jul-18 16:30:22 10-Jul-18 16:30:22 0.02 0.00  D:\temp\10 passwordchangelog.txt 10-Jul-18 16:30:26 10-Jul-18 16:30:26 0.02 0.00  ... 

Was meinst du mit...

aber es zieht nicht alle Dateien.

GCI wird alle Dateien, die Sie danach fragen, so lange Sie über die entsprechenden Berechtigungen verfügen. Wenn Sie trotzdem filtern, wird dies alles zurückgegeben.

AddDays (-365)

Das heißt, gib mir nur Dateien, die älter sind als. Somit wird alles, was nicht älter ist als Sie, von Design nicht bekommen.