Ich habe versucht, ein PowerShell-Skript zu erstellen, das alle Dateien und Ordner, ihr Erstellungsdatum und das Datum des letzten Zugriffs, die Größe in MB und, wenn möglich, die letzte Person, die darauf zugegriffen hat, auflistet und einen Export in eine CSV-Datei ermöglicht.
Ich habe einige Skripte getestet und sogar Hilfe von dem anderen Beitrag bekommen, aber es werden nicht alle Dateien abgerufen.
Dies ist das Skript, das ich derzeit ausführe:
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
Antwort1
Das ist alles, was Sie aus den Dateieigenschaften erfahren 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 den obigen Eigenschaften des Dateiobjekts entnehmen können, gibt es keine Informationen darüber, wer zuletzt darauf zugegriffen hat. Zuletzt müssen Sie die Länge in KB, MB usw. umrechnen.
Sie tun also Folgendes ... (verwenden Sie einfach nicht die Formattabelle für die Ausgabe. Dies ist nur für den Bildschirm gedacht.)
Get-ChildItem 'd:\temp' -Recurse -ErrorAction SilentlyContinue `
| Where-Object {$_.LastWriteTime -gt (Get-Date).AddDays(-365)} `
| Select FullName,CreationTime,LastAccessTime,
@{Name='Size(kb)';Expression={“{0:F2}” -f ($_.length/1KB)}},
@{Name='Size(mb)';Expression={“{0:F2}” -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...
Es werden jedoch nicht alle Dateien abgerufen.
GCI ruft alle Dateien ab, die Sie anfordern, sofern Sie die entsprechenden Berechtigungen haben. Wenn Sie trotzdem filtern, wird nur das zurückgegeben.
Tage hinzufügen(-365)
Das bedeutet, dass Sie mir nur Dateien geben, die älter sind als. Alles, was nicht älter ist als, erhalten Sie absichtlich nicht.