У меня есть следующий скрипт, который отлично работает, перечисляя файлы-кандидаты для удаления. Но я не могу понять, где и как добавить инструкцию Remove-Item
для фактического удаления файлов без потери файла экспорта. Кстати, журнал Write-Host не подходит, так как мне нужно записывать размер файлов, время последней записи и т. д. Это должен быть экспорт CSV (как у меня с этим скриптом).
Конечно, я могу повторно запустить Get-ChildItem
и вместо этого передать Select-Object
, передать Remove-Item
, но это означало бы большую потерю времени.
Мой сценарий:
$EXTERNALFILE = "C:\DataCleaning\Scripts\FilesToRemove.txt"
$DESTINATION_DIR = "C:\DataCleaning\Logs\"
$LOGFILECSV = "${DESTINATION_DIR}\Removed_$(Get-Date -f yyyy-MM-dd_hh-mm-ss).csv"
$List = Get-Content $EXTERNALFILE
$REPORT = foreach ($Data in $List) {
$Data = $Data -split(';')
$SOURCEDIR = $Data[0]
$FILTERMASK = $Data[1]
$RETENTION = (Get-Date).AddMonths(-$Data[2])
Get-ChildItem -LiteralPath $SOURCEDIR -File -Recurse |
Where-Object {($_.LastWriteTime –lt $RETENTION) -and ($_.Extension -notmatch $FILTERMASK)} |
Select-Object FullName, LastWriteTime, CreationTime,
@{Name="Size (MB)";Expression={[Math]::Round($_.Length /1MB, 2)}},
@{Name="Age (Days)";Expression={(((Get-Date) - $_.LastWriteTime).Days)}}
}
$REPORT | Export-Csv -Delimiter "|" -NoTypeInformation -Encoding UTF8 -Path $LOGFILECSV
Remove-Item
может использовать переключатель-WhatIf
. - person lit   schedule 24.10.2018$REPORT
массива, а не для массива элементов. Мы делаем перечисление членов stackoverflow.com/questions/12131416/ - person Nas   schedule 24.10.2018