При активном использовании ПК, иногда возникает необходимость следить за количеством свободной памяти на логических дисках.

В этой статье, я расскажу как реализовать мониторинг свободной памяти логического диска, с оповещением в телеграмм.
Итак, будем использовать скрипт VBS. Создадим пустой текстовый файл, и изменим его имя и расширение на free.vbs. После этого, откроем этот документ текстовым редактором, и введем следующий код:



Option Explicit
Dim bot, chat_id, Quota, disk
'Token и Chat_id телеграм бота
bot = "хххххххххххххххххххххх"
chat_id = "хххххххх"
Quota = "47"	'количество свободных гигабайт 
disk="D"	'буква диска

Call main

Sub main()
	Dim free,fso,objArgs,WSHShell,i,computer,strSubject
	free="0"
	Set fso = WScript.CreateObject("Scripting.FileSystemObject") 
	Set objArgs = WScript.Arguments 
	Set WSHShell = WScript.CreateObject("WScript.Shell") 
	computer = WshShell.ExpandEnvironmentStrings("%computername%") 
	strSubject = "На диске "+ disk+":/ сервера "+computer +", "

	'проверяем все драйвы (HDD, FDD, CDD) в системе 
	For each i In fso.Drives 
	'DriveType=2 - логические диски. зачем нам дисковод и т.п. ерунда? 
		If i.DriveType=2 Then 
			If i.DriveLetter=disk Then 
			'получаем букву диска 
			'Узнаем свободное место и переводим его в Гб с 
			'точностью до 2 знак после запятой 
			free = FormatNumber(fso.GetDrive(i.DriveLetter).FreeSpace/1073741824, 2) 
			End If
		End If 
	Next
	'если места меньше, чем  в переменной Quota Гб 
	If (Abs(free) < Abs(Quota)) Then
		sendMessage_telegramm free, strSubject
	End If
End Sub
 
Sub sendMessage_telegramm( ByVal free,ByVal text)
	Dim xpl, xmlHTTP, adr, auth, rez, PostData
	Set xmlHTTP = CreateObject("Microsoft.XMLHTTP")
	adr = "https://api.telegram.org/bot"+ bot + "/sendMessage?chat_id="+chat_id+"&text=ВНИМАНИЕ! "+text+" сейчас свободно "+free+" Гб."
	
	PostData = "{""Page"":1,""Count"":25,""Courts"":[],""DateFrom"":null,""DateTo"":null,""Sides"":[],""Judges"":[],""CaseNumbers"":[""А83-4276/2015""],""WithVKSInstances"":false}"
	xmlHTTP.Open "POST", adr, "false"
    xmlHTTP.SetRequestHeader "x-date-format", "iso"
    xmlHTTP.SetRequestHeader "Content-Type", "application/json"
    xmlHTTP.SetRequestHeader "X-Requested-With", "XMLHttpRequest"
    xmlHTTP.SetRequestHeader "Accept", "application/json, text/javascript, */*"
    xmlHTTP.SetRequestHeader "Referer", "https://api.telegram.org/"
    xmlHTTP.SetRequestHeader "Accept-Language", "ru-RU"
    xmlHTTP.SetRequestHeader "Accept-Encoding", "gzip, deflate"
    xmlHTTP.SetRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko"
    xmlHTTP.SetRequestHeader "Host", "kad.arbitr.ru"
    xmlHTTP.SetRequestHeader "Content-Length", CStr(Len(PostData))
    xmlHTTP.SetRequestHeader "DNT", "1"
    xmlHTTP.SetRequestHeader "Connection", "Keep-Alive"
    xmlHTTP.SetRequestHeader "Cache-Control", "no-cache"
    xmlHTTP.Send CStr(PostData)
    
	Do While xmlHTTP.readystate <> 4: WScript.Sleep 200: Loop
 
    rez = xmlHTTP.responseText
End Sub

Соответственно переменные вначале кода, заполняем своими значениями. Как получить Token и Chat_id телеграмм бота, объяснять не буду, инструкций полно в Интернете.
Для автоматизации процесса, скрипт я запускаю через планировщик заданий каждый день в 10 часов утра.
P.S. Сам VBS-скрипт через планировщик не запускается, но запускается *.bat файл. Поэтому я использую free.bat файл для запуска скрипта
c:\windows\system32\cmd.exe /c "start "start" "D:\free.vbs"
Возможно, Вам будет интересна еще одна статья: Оптимизация PNG изображений

Похожие статьи:

Пересылка СМС с OpenVox в Telegram
Как пример опишу реализацию задачи "Очередь на кассе". Если очередь на кассе - отправь сообщение на номер 050XXXXXXX с текстом "2302". Когда приходит сообщение переправлять в Telegram канал. Сим-карта с номером 050XXXXXXX подключена в Openvox, который в свою очередь настроен на получение СМС. Решение Для пересылки полученных сообщений ...
Отправка сообщения всем активным пользователям RDP на Windows Server 2016
Обратите внимание! Если пользователь работает без рабочего стола (запуск приложения), то сообщения не будет. Отправляются только тем, у кого разрешен Рабочий стол. Пошаговое руководство Запускаем cmd от имени администратора Выполняем команду msg.exe * /server:MY-Name-Server "Почистите, пожалуйста, свои корзины!" Где MY-Name-Server - название сервера. Источник: http://pyatilistnik.org/send-a-message-to-all-users-of-the-rds-farm/
Мониторинг времени простоя компьютера
Чтобы реализовать мониторинг времени простоя компьютера, нужно учитывать тот факт, что пользователь обычно работает с мышкой, поэтому будем анализировать ее активность. Если мышь была не активной в течение N минут, сделаем вывод, что пользователь в настоящее время не работает с ПК. Всю статистику будем отправлять ...
Мониторинг состояния RAID массива контроллеров P420
Описание Контроллер HPE Smart Array P420 - это низкопрофильный RAID-контроллер с интерфейсом 6 Гбит/с, PCIe 3.0, Serial Attached SCSI (SAS), корпоративного класса, который обеспечивает производительность хранилища и защиту данных для стоечных серверов HPE ProLiant Gen8. Он оснащен восемью внутренними портами SAS и обеспечивает повышенное время безотказной ...
«Умная» пересылка входящих СМС сообщений в OpenVox
Берем за пример статью Пересылка СМС с OpenVox в Telegram, здесь мы получаем сообщения с Opnevox, отсекаем только те сообщения, которые приходят на определённый порт, и отправляем сообщение в Telegram. В этой статье опишу как "умно" сортировать входящие СМС сообщения, и направлять их на определённые сервисы ...
Отправка сообщений на e-mail через cmd
Для удобства отправки e-mail с командной строки, написал консольную программу на языке Pascal. Среда разработки PascalABC.NET. uses System.Net.Mail, System.Net, System.Net.Mime, System.IO; var i:integer; s:integer; MAILFrom: string; MAILTo:string; SMTPServer:string; SMTPPort:string; SMTPPass:string; Mail:string; Subject:string; Body:string; begin SMTPServer := ParamStr(1); SMTPPort := ParamStr(2); MAILFrom := ParamStr(3); SMTPPass := ParamStr(4); MAILTo := ParamStr(5); Mail :=''; for i := 6 to ParamCount do begin ...
Резервная копия профиля Mozilla Thunderbird
Во время работы с почтовым клиентом Mozilla Thunderbird, возникает вопрос создание резервной копии писем, например при переустановке ОС, либо перенести все письма в другое место. Для этого нужно: закрыть приложение Mozilla Thunderbird; переходим в каталог C:\Users\<Имя пользователя>\AppData\Roaming\Thunderbird\; именно отсюда копируем папку «Profiles» в любое желаемое нам ...
Отправка сообщений в Telegram
Здесь описаны возможные способы отправки сообщений в Telegram Windows CMD Для удобства отправки с командной строки, написал консольную программу на языке Pascal. Среда разработки PascalABC.NET uses System.IO, System.Net; var i:integer; html : string; chat_id: string; {:='111111111';} token: string; {:= '0000000:AAAAAAAAAAAAAAAAAAAAAA';} parse_mode: string; {:= 'html';} message: string:=''; {:='Сообщение';} url : string; begin token := ParamStr(1); chat_id := ParamStr(2); parse_mode := ...