Вывод командлета журнала в файл с функцией ведения журнала без использования foreach

У меня есть командлет, подобный следующему примеру, для удаления файлов старше x дней и функция ведения журнала (журнал записи), которая регистрируется в файле:

$limit = (Get-Date).AddDays(-15)
$path = "C:\Some\Path"

# Delete files older than the $limit.
Get-ChildItem -Path $path -Recurse -Force | Where-Object { !$_.PSIsContainer -and $_.CreationTime -lt $limit } | Remove-Item -Force

Что я хочу сделать, так это записать, что командлет делает с каждым обработанным файлом. В обычном цикле foreach я бы добавил что-то подобное, чтобы регистрировать процесс

if($?){
    write-log -Info "File $item deleted successfully" #call my logging function that logs to a file
} else {
    write-log -Info "File $item could not be deleted" #call my logging function that logs to a file
}

Как я могу регистрировать все действия, используя мою функцию ведения журнала и указанный выше командлет?


person user1276012    schedule 27.07.2016    source источник
comment
Я должен был спросить ниже, почему вы избегаете ForEach/ForEach-Object?   -  person markg    schedule 27.07.2016


Ответы (1)


Почему бы просто не объединить их в один цикл?

$limit = (Get-Date).AddDays(-15)
$path = "C:\Some\Path"

# Delete files older than the $limit.
Get-ChildItem -Path $path -Recurse -Force | Where-Object { !$_.PSIsContainer -and $_.CreationTime -lt $limit } | ForEach-Object {
    Remove-Item $_ -Force
    if($?){
        write-log -Info "File $($_.Name) deleted successfully" #call my logging function that logs to a file
    } else {
        write-log -Info "File $($_.Name) could not be deleted" #call my logging function that logs to a file
    }
}
person markg    schedule 27.07.2016
comment
хм, спасибо, не думал, что можно так просто превратить его в foreach :/ - person user1276012; 27.07.2016