Реализовать вывод -verbose из цикла ForEach в PowerShell? - PullRequest
0 голосов
/ 19 марта 2019

Я пишу скрипт для архивирования некоторых файлов журнала старше 6 месяцев в 7zip-файл, а затем удаляю исходные файлы.Я хочу реализовать вывод -verbose, чтобы был создан файл журнала, в котором перечислены файлы, которые были успешно заархивированы и удалены.Вывод удаленных файлов сообщает правильно, однако я не знаю, где в коде реализовать -verbose для подтверждения архивации в файл 7z.

# start logging of archived files and specify log location for each day 
Start-transcript C:\Temp\LogArchiveTesting\Logs\Archived_Server_Logging_$(get-date -format ddMMMyyyy).log


# set folder path
$log_path = "C:\Temp\LogArchiveTesting\*.*"
$zip_path = "C:\Temp\LogArchiveTesting\Archive\*.7z"
$target_path = "C:\Temp\LogArchiveTesting\Archive\"

# set min age of files
$max_months = "-6"
$delete_max_days = "-365"

# get the current date
$curr_date = Get-Date

# determine how far back we go based on current date
$zip_date = $curr_date.AddMonths($max_months)
$delete_zip_date = $curr_date.AddDays($delete_max_days)

#$zip_date = (Get-Date).AddMonths(0).Month

# filter files
Get-ChildItem $log_path | Where-Object { ($_.LastWriteTime -lt $zip_date) -and ($_.psIsContainer -eq $false)}|

  ForEach {
    $Zip = $target_path + "{0:yyMM}_{0:MMM}Server Logging.7z" -f $_.LastWriteTime
    & "C:\Program Files\7-Zip\7z.exe" u -mx9 -t7z -m0=lzma2  $Zip $_.FullName |Out-Null
    If ($LastExitCode -eq 0) { Remove-Item $_.FullName }
  }

$deletefile = Get-ChildItem $zip_path | Where-Object { $_.LastWriteTime -lt $delete_zip_date } | Remove-Item -verbose

#Stops logging of archived files
stop-transcript
...