Вы можете сделать следующее, чтобы найти temp*.zip
файлы, удалить их, записать удаленные файлы в файл журнала, а затем отправить список удаленных файлов по электронной почте. Это предполагает, что ваши удаления успешны. Вам нужно будет удалить параметр -WhatIf
для удаления.
Get-ChildItem -Filter temp*.zip -Path "c:\tempfiles" -File -OutVariable files | Foreach-Object {
$_ | Remove-Item -Force -WhatIf
"{0} {1}" -f (Get-Date),$_.Name |
Out-File -FilePath "c:\tempfiles\logs\dellogs.txt" -Append
}
if ($files) {
$MailParams = @{ 'To' = 'to@domain.com'
'From' = 'from@domain.com'
'Subject' = "Subject server $(Get-Date)"
'Body' = $files.Name | Out-String
'SmtpServer' = 'smtpservername'
}
Send-MailMessage @MailParams
}
Если вы хотите проверять ошибки и сообщать только об удалении файлов, вы можете внести некоторые изменения.
$files = [Collections.Generic.List[String]]@()
Get-ChildItem -Filter temp*.zip -Path "c:\tempfiles" -File | Foreach-Object {
$_ | Remove-Item -Force -WhatIf
if ($?) {
"{0} {1}" -f (Get-Date),$_.Name |
Out-File -FilePath "c:\tempfiles\logs\dellogs.txt" -Append
$files.Add($_.Name)
}
}
if ($files) {
$MailParams = @{ 'To' = 'to@domain.com'
'From' = 'from@domain.com'
'Subject' = "Subject server $(Get-Date)"
'Body' = $files.Name | Out-String
'SmtpServer' = 'smtpservername'
}
Send-MailMessage @MailParams
}
$?
возвращает true, если последняя команда выполнена успешно. См. About_Automatic_Variables .
Синтаксис @MailParams
называется Splatting . Он просто используется здесь для удобства чтения.