none
Проверка свободного места на дисках и отправка на почту RRS feed

  • Вопрос

  • Добрый день ,может есть у кого скрипт который делает :

    Проверяет свободное место на на всех дисках которые есть и отправляет отчет :

    Тема письма : %Имя сервер% (место на дисках)

    тело письма :

    Диск С: свободно ХХХ%

    Диск Д: свободно ХХХ%

    итд.

    Заранее благодарен.


    Сначала Вас игнорируют, потом над Вами смеются, потом с Вами борются, а затем Вы победили.

    12 июня 2012 г. 15:06

Ответы

  • А поставить на серверах квоту - не позволяет религия?

    Система сама будет отсылать отчеты о свободном месте и распределении файлов.

    • Помечено в качестве ответа MR.Minion 14 июня 2012 г. 11:57
    13 июня 2012 г. 14:41
  • У меня очень много точек продаж , нужно контролировать место на дисках , вот и подумал что скриптом сделать .
    вот к тому и спрашивал, как выше верно заметили, правильнее будет использовать квоты. FSRM начиная с 2003R2 позволяет отслеживать размер папок и места на дисках реалтайм, отправлять отчеты и предупреждения по почте и тд и при грамотной настройке вообще возложить большую часть проблем с контролем места на самих пользователей.
    • Помечено в качестве ответа MR.Minion 14 июня 2012 г. 11:57
    14 июня 2012 г. 9:35
  • Нужно создать на эксчейнже такого пользователя дать соответствующие права.

    То есть адрес, с которого Вы шлете уведомления, должен существовать в организации.

    • Помечено в качестве ответа MR.Minion 17 июня 2012 г. 9:31
    15 июня 2012 г. 7:59

Все ответы

  • Если попроще, то можно так:

    [string]$FreeSpace = Get-WmiObject Win32_LogicalDisk | ForEach-Object `
    	{
    		'Диск ' + $_.DeviceID + " свободно " + $_.FreeSpace + "`n"
    	}
    
    Send-MailMessage -From 'service@domain.local' -To 'admin@domain.local' -Subject "$Env:COMPUTERNAME (место на дисках)" -Body $FreeSpace -Encoding ([System.Text.Encoding]::UTF8)

    правда, там свободное место в байтах, чтоб было понятнее нужно перевести.

    12 июня 2012 г. 18:42
  • # (число)байт/1073741824 = (число)гигабайт
    # (число)байт/1048576 = (число)мегабайт
    
    param(
    $Disk = "C:"
    )
    
    $e = @()
    $d = Get-WMIObject Win32_LogicalDisk | ?{$_.deviceid -eq $Disk}
    $InfoDisk = "Информация о диске $disk"
    
    $e += $d | % {
            $_ | select @{e={($_.Size/1gb).ToString("F00")};n='Объем диска(Гб):'},
                @{e={($_.FreeSpace/1gb).ToString("F00")};n='Свободно(Гб):'},
                @{e={(100-(($_.Size-$_.freespace)*100)/$_.Size).ToString("F00")};n='Свободно(%)'}
    }
    
    $Server = "server.mail.ru" # SMTP Сервер
    $From = "user@server.mail.ru" # Адрес отправителя
    $To = "user@server.mail.ru" # Получатель
    $Subject = "$env:computername (место на дисках)" # Тема сообщения
    $SmtpClient = New-Object System.Net.Mail.SmtpClient
    $Message = New-Object System.Net.Mail.MailMessage
    $SmtpClient.Host = $Server
    $Message.From = $From
    $Message.To.Add($To)
    $Message.Subject = $Subject
    $Message.Body += $InfoDisk
    $Message.Body += $e | Out-String -Width 60
    $SmtpClient.Send($Message)
    Write-Host "Complete!"
    $Message.Dispose()
    Не много модернизируйте код для получения данных со всех дисков.
    • Предложено в качестве ответа Angel-Keeper 13 июня 2012 г. 1:25
    13 июня 2012 г. 1:25
  • Спасибо ,буду тестировать , о результатах отпишусь .

    Сначала Вас игнорируют, потом над Вами смеются, потом с Вами борются, а затем Вы победили.

    13 июня 2012 г. 7:33
  • поясните, если не затруднит, зачем это нужно?

    13 июня 2012 г. 11:39
  • У меня очень много точек продаж , нужно контролировать место на дисках , вот и подумал что скриптом сделать .

    Сначала Вас игнорируют, потом над Вами смеются, потом с Вами борются, а затем Вы победили.

    13 июня 2012 г. 13:52
  • А поставить на серверах квоту - не позволяет религия?

    Система сама будет отсылать отчеты о свободном месте и распределении файлов.

    • Помечено в качестве ответа MR.Minion 14 июня 2012 г. 11:57
    13 июня 2012 г. 14:41
  • У меня очень много точек продаж , нужно контролировать место на дисках , вот и подумал что скриптом сделать .
    вот к тому и спрашивал, как выше верно заметили, правильнее будет использовать квоты. FSRM начиная с 2003R2 позволяет отслеживать размер папок и места на дисках реалтайм, отправлять отчеты и предупреждения по почте и тд и при грамотной настройке вообще возложить большую часть проблем с контролем места на самих пользователей.
    • Помечено в качестве ответа MR.Minion 14 июня 2012 г. 11:57
    14 июня 2012 г. 9:35
  • Спасибо большое , надо было всего меня наставить на путь истинный спасибо !

    Сначала Вас игнорируют, потом над Вами смеются, потом с Вами борются, а затем Вы победили.


    • Изменено MR.Minion 14 июня 2012 г. 11:59
    14 июня 2012 г. 11:57
  • Что я не правильно указал в сети Exchange 2010

    10.8.254.9 IP сервера где тестирую квоты

    Не удалось выполнить действие "электронная почта" диспетчера ресурсов файлового сервера.

    Подробные сведения об ошибке:
       Ошибка: IFsrmEmailExternal::SendMail, 0x8004531c, Почтовый ящик недоступен. Ответ сервера: 5.7.1 Client does not have permissions to send as this sender


    Сначала Вас игнорируют, потом над Вами смеются, потом с Вами борются, а затем Вы победили.

    14 июня 2012 г. 19:08
  • Нужно создать на эксчейнже такого пользователя дать соответствующие права.

    То есть адрес, с которого Вы шлете уведомления, должен существовать в организации.

    • Помечено в качестве ответа MR.Minion 17 июня 2012 г. 9:31
    15 июня 2012 г. 7:59
  • Пользователь создан ,как мне выставить права чтобы с него могли отправлять ?

    Сначала Вас игнорируют, потом над Вами смеются, потом с Вами борются, а затем Вы победили.


    • Изменено MR.Minion 15 июня 2012 г. 10:08
    15 июня 2012 г. 9:54
  • Пользователь создан ,как мне выставить права чтобы с него могли отправлять ?

    Сначала Вас игнорируют, потом над Вами смеются, потом с Вами борются, а затем Вы победили.


    New-ReceiveConnector -Name "FSRV Relay" -Usage Custom -PermissionGroups AnonymousUsers -Bindings 10.8.254.7:25 -RemoteIpRanges 10.8.254.9

    10.8.254.7 Exchange 2010

    10.8.254.9 Сервер откуда нужно отправлять отчеты

    все правильно сделал ?



    Сначала Вас игнорируют, потом над Вами смеются, потом с Вами борются, а затем Вы победили.


    • Изменено MR.Minion 15 июня 2012 г. 12:13
    15 июня 2012 г. 12:06
  • Подробные сведения об ошибке:

       Ошибка: IFsrmEmailExternal::SendMail, 0x8004531c, Почтовый ящик недоступен. Ответ сервера: 5.7.1 Client does not have permissions to send as this sender

    В редакторе реестра открываем ветку «HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa» и создаем параметр «DWORD» с именем «LmCompatibilityLevel» и значением «2″.

    • Предложено в качестве ответа Angel-Keeper 17 июня 2012 г. 3:25
    17 июня 2012 г. 3:25