Мне нужен сценарий, который может собрать информацию папок/файлов от больших дисков (600 ГБ к 1 ТБ). Информация, в которой я буду нуждаться:
До сих пор у меня есть код ниже:
dir 'e:\' -recurse |
select FullName,Length,CreationTime,LastWriteTime,LastAccessTime |
Export-CSV e:\test\testit.csv -notype
Было бы возможно адаптировать сценарий поэтому, поскольку это может искать на, ‘Если измененная дата является равной ‘xxx’ дням или более старой, то выходные данные к csv..
xxx был бы числом – т.е. 365 в течение 1 года или более старый.. или xxx был бы числом – т.е. 730 в течение 2 лет или более старый..
Также было бы возможно изменить заголовки для столбцов, которые это производит на файле CSV?Спасибо
Для первой части вопроса вы можете использовать
# fixed date
Get-ChildItem c:\temp\ | ? { $_.LastWriteTime -lt [datetime]'2009-02-23' }
# variable depending on current date; it returns only items that are older than 365 days
Get-ChildItem c:\temp\ | ? { $_.LastWriteTime -lt [datetime]::Now.AddDays(-365) }
Что касается изменения заголовков .. Я могу выберите элементы с разными именами, но с одинаковым содержимым (~ переименуйте свойства):
Select-Object @{Name='ItemName'; Expression={$_.FullName } },
@{Name='Write'; Expression={$_.LastWriteTime } },
@{Name='Access'; Expression={$_.LastAccessTime } }
Обратите внимание, что есть блок сценария, в котором вы можете делать все, что захотите. Вы можете, например, отформатируйте даты {$ _. LastAccessTime.ToString ('yyyy-MM-dd')}
Если бы я сложил их вместе (есть только 3 свойства "переименовано")
Get-ChildItem e:\ -rec |
? { $_.LastWriteTime -lt [datetime]::Now.AddDays(-365) } |
Select-Object @{Name='ItemName'; Expression={$_.FullName } },
@{Name='Write'; Expression={$_.LastWriteTime } },
@{Name='Access'; Expression={$_.LastAccessTime } } |
Export-Csv e:\test\testit.csv -notype