#powershell
Вопрос:
У меня есть вопрос, с которым, я надеюсь, один из вас сможет мне помочь. Следующий скрипт выполняет свою работу, он отправляет по электронной почте папки, возраст которых превышает 30 дней. Я хочу добавить еще 2 функции…
- Если в OwnerEmail.txt нет ни там, ни там пустоты.. он не отправит электронное письмо.
- Если нет папок старше 30 дней, он не отправит электронное письмо.
У меня просто возникли проблемы с использованием функции ПРОДОЛЖЕНИЯ, чтобы пропустить предварительный просмотр
$ParentFolders = Get-ChildItem -Path "C:TestWRA" -Directory |
Select-Object -ExpandProperty FullName
foreach ($SubFolder in $ParentFolders) {
$Contact = Get-Content -Path ($SubFolder "OwnerEmail.txt")
$emailTime = (Get-Date).ToString("MM/dd/yyyy")
$WRAHTMLReport = Get-ChildItem -Path $SubFolder -Directory |
Where-Object {($_.LastWriteTime -lt (Get-Date).AddDays(-30))} |
Select-Object Name, CreationTime |
ConvertTo-Html -Head $Header -PreContent "
<h2>Current Nuix Case(s)</h2>
<body>
Report was sent on $emailTime
<br></br>
When you have a moment can you please confirm if any of these cases can be removed from Nuix:
<body>
<br></br> " |
$WRAHTMLReport = $WRAHTMLReport -join ""
Start-Sleep -s 2
Send-MailMessage -SmtpServer mail.company.com -to $Contact -from cubam1@company.com -Subject "Nuix Cases" -Body $WRAHTMLReport -BodyAsHtml
}
Комментарии:
1. ваш
Where-Object
фильтр может иметь несколько тестов … так что просто добавьте их туда. [ усмехается ]2. Предварительный элемент помещается между открытием
<body>
и<table>
тегами, поэтому вы не должны включать свои собственные<body></body>
теги3. Спасибо вам за всю вашу помощь!
Ответ №1:
Итак, это может выглядеть примерно так, обратите внимание, что я показываю только соответствующие части кода.
Я думаю, что в этом случае безопасно ставить $emailTime
вне цикла, так как вы собираете дату только в MM/dd/yyyy
формате, и я также добавил $folderLimitDate
вне цикла.
Эта переменная содержит текст HTML $mailBody = ConvertTo-Html -InputObject $WRAHTMLReport...
, поэтому не забудьте изменить значение -Body $mailBody
вкл. Send-MailMessage
$emailTime = (Get-Date).ToString("MM/dd/yyyy")
$folderLimitDate = (Get-Date).AddDays(-30)
foreach ($SubFolder in $ParentFolders)
{
$path = Join-Path $SubFolder -ChildPath 'OwnerEmail.txt'
# If OwnerEmail.txt doesn't exist on this path,
# go to next loop iteration
if(-not(Test-Path $path)){ continue }
$Contact = Get-Content $path
$WRAHTMLReport = Get-ChildItem -Path $SubFolder -Directory |
Where-Object LastWriteTime -LT $folderLimitDate |
Select-Object Name, CreationTime
# If this variable is null, go to next loop iteration
if(-not $WRAHTMLReport){ continue }
[string]$mailBody = ConvertTo-Html -InputObject $WRAHTMLReport...
...
...
...
Комментарии:
1. Ты всегда спасаешь меня, Сантьяго!!, Большое тебе спасибо!, это сработало
2. @Мигель хе-хе, нет проблем! рад помочь! 🙂