Задать вопрос
@Djasar

Неправильно срабатывает условия IF как исправить?

Сам запрос, который проверяет объем папки и отправляет на почту результат.

gci -force 'E:\BASE\enm*\pm*','F:\DATE\enm*\pm*' -ErrorAction SilentlyContinue | ? { $_ -is [io.directoryinfo] } | % {$len = 0
gci -recurse -force $_.fullname -ErrorAction SilentlyContinue | % { $len += $_.length }
$colors = @{$False='black'; $True='red'}
$_.fullname+' - ', '<font color="{1}">{0:N2} Gb</font>' -f ($len / 1Gb), $colors[$len -ge 3Gb]}  | Tee-Object -Variable body 
if ($len -ge 3Gb)
{
Send-MailMessage-From 'test@test.ru' -To 'test@test.ru', -Subject "enm size" -BodyAsHtml ($Body -join "<br>`r`n")  –SmtpServer '10.10.10.10'
}


В условии хочу прописать отправлять письмо, если объем одного из каталога больше 3Gb. Но у меня это что то не получается

Пример текста на почту приходи такой
E:\BASE\enm_1\pm1 - 0.01 Gb
E:\BASE\enm_2\pm2 - 0.01 Gb
F:\DATE\enm_1\pm1 - 0.04 Gb
F:\DATE\enm_2\pm2 - 0.05 Gb

Я так понял он проверяет все папки и пока во всех папках не будет выше 3Gb он не отправит.
  • Вопрос задан
  • 32 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
@MaxKozlov Куратор тега PowerShell
жудкий синтаксис. позволил себе отформатировать :)
проверять каждую папочку отдельно и ставить флажок "отправлять"
а у вас фактически проверяется только последняя папка
$folders = 'E:\BASE\enm*\pm*','F:\DATE\enm*\pm*'
$send_mail = $false
Get-ChildItem -force $folders -ErrorAction SilentlyContinue | Where-Object { $_ -is [io.directoryinfo] } | ForEach-Object {
    $len = 0
    Get-ChildItem -recurse -force $_.fullname -ErrorAction SilentlyContinue | ForEach-Object { $len += $_.length }
    $colors = @{$False='black'; $True='red'}
    $_.fullname+' - ', '<font color="{1}">{0:N2} Gb</font>' -f ($len / 1Gb), $colors[$len -ge 3Gb]
    if ($len -ge 3Gb) {
        $send_mail = $True
    }
} | Tee-Object -Variable body 
if ($send_mail)
{
    Send-MailMessage-From 'test@test.ru' -To 'test@test.ru', -Subject "enm size" -BodyAsHtml ($Body -join "<br>`r`n")  –SmtpServer '10.10.10.10'
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы