Очистка файлового сервера

307
user931101

Я пытался создать сценарий PowerShell, который перечисляет все файлы и папки, дату их создания и дату последнего доступа, размер в МБ и, если возможно, последний человек, который обращался к нему, с экспортом в файл CSV.

Я протестировал несколько скриптов и даже получил помощь из другого поста, но он не вытягивает все файлы.

Это скрипт, который я сейчас запускаю:

 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 ответ на вопрос

0
postanote

Это все, что вы можете получить из свойств файла. первого выбранного файла

# 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 

Как видно из приведенных выше свойств на объекте файла. нет информации о том, кто обращался к ней последним. Наконец, вы должны преобразовать длину в КБ, МБ и т. Д.

Итак, вы делаете это ... (просто не используйте Format-Table для вывода. Это только для экрана)

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  ... 

Что вы подразумеваете под...

но это не тянет все файлы.

GCI будет запрашивать все файлы, если у вас есть для этого разрешения. Если вы все равно отфильтруете, это все, что будет возвращено.

AddDays (-365)

Это значит, только дайте мне файлы старше, чем. Таким образом, ничего не старше, вы не получите, по замыслу.

Похожие вопросы