Отправка уведомления в Tele с Windows Server 2019

Я писал о том, как отправлять письма себе с Windows Server 2019, но иногда лень берет верх, и можно пропустить важное сообщение. У меня уже есть бот, который информирует о состоянии сервисов и отправляет уведомления в общий чат DevOps. Теперь добавим туда алерт о том, что место на диске заканчивается!

Шаги:

  1. Создайте скрипт PowerShell:
    • Создайте новый файл с расширением “.ps1” (например “sendCheckDiskAlert.ps1”).
    • Я для удобства, положу его на рабочий стол C:\Users\Administrator\Desktop
    • Вставьте следующий скрипт, чтобы проверить доступное место на всех дисках и отправить результат на вашу почту:
# Параметры бота
$botToken = "ВАШ_ТОКЕН_ТЕЛЕГРАМ_БОТА"
$chatId = "ИТ_ЧАТА_КУДА_ОТПРАВЛЯТЬ"

# Функция для проверки диска
function Check-DiskSpace {
    param (
        [string]$driveLetter
    )

    # Получение информации о диске
    $disk = Get-PSDrive $driveLetter

    # Проверка заполненности
    $usedSpacePercentage = ($disk.Used / ($disk.Used + $disk.Free)) * 100
    $freeSpaceGB = [math]::Round($disk.Free / 1GB, 2)

    if ($usedSpacePercentage -gt 90) {
        # Формирование сообщения
        $message = "MSSQL-1C: Диск $driveLetter почти заполнен!`nЗанятость: $([math]::Round($usedSpacePercentage, 2))%.`nСвободное место: $freeSpaceGB ГБ."

        # Отправка сообщения в Telegram
        $url = "https://api.telegram.org/bot$botToken/sendMessage"
        $body = @{
            chat_id = $chatId
            text    = $message
        }

        Invoke-RestMethod -Uri $url -Method Post -Body $body
    }
}

# Проверка дисков C, L и M (у вас могут быть свои)
Check-DiskSpace -driveLetter "C"
Check-DiskSpace -driveLetter "L"
Check-DiskSpace -driveLetter "M"

2. Добавьте задание в планировщике задач:

  1. Нажмите Win + R, введите “taskschd.msc”.
  2. В окне Планировщика задач выберите “Создать базовое задание” в правой панели.
  3. Выберите “Ежедневно” и укажите удобное для вас время.
  4. Выберите “Запуск программы” и нажмите “Далее”.
  5. Настройте скрипт PowerShell:
    • Введите путь к исполняемому файлу PowerShell (обычно “C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe“).
    • Добавьте аргумент -File "C:\Users\Administrator\Desktop\sendCheckDiskAlert.ps1"

3. Убедитесь, что стоит эта галочка, чтобы задача выполнялась без авторизации пользователей.

4. Наслаждаемся результатами нашей работы!