Windows Server 2016

Перевірка вільного простору на диску за допомогою сценарію PowerShell

Перевірка вільного простору на диску за допомогою сценарію PowerShell

У цій статті ми покажемо, як використовувати PowerShell для моніторингу вільного простору на диску сервера (комп'ютер) з Windows та попередженням адміністратора (спливаюче вікно або літери), якщо значення порогового значення буде перевищене.

Зміст:

PowerShell: Перевірка вільного місця на диску через клас WMI

Ви можете отримати інформацію про логічні диски в Windows за допомогою класу WIN32_LOGICALDISK WMI.

Наступна команда відобразить всю інформацію про логічні диски комп'ютера:

Get -wmiobject -class win32_logicaldisk

Якщо ви використовуєте новий PowerShell Core 7.X, майте на увазі, що PowerShell WMI не підтримується в цій версії (t.до. Core PowerShell на основі .Чисте ядро). Тому при запуску команди get-wmiobject з’явиться помилка " Термін "get-wmiobject" не визнаний назвою командлета, функції, файлу сценарію або виконуваної програми Що. Замість WMI Commandletes вам потрібно використовувати CIM, наприклад:

Get-ciminstance win32_logicaldisk

Власність вільної площі містить решту місця на кожному спині байт. Для зручності ви можете перетворити його на ГБ, а також зняти % -місця на кожному з логічних дисків (як співвідношення швидкості швидкості до загального диска) . Ви можете використовувати такий сценарій PowerShell:

Get -wmiobject -class win32_logicaldisk |
Виберіть -Object -Property DeviceId, volumename, @label = 'freeSpace (gb)'; Вираз = ($ _.FreeSpace/1 Гб).ToString ('f2'),
@Label = 'Total (gb)'; Вираз = ($ _.Розмір/1 Гб).ToString ('f2'),
@Label = 'freepercent'; Вираз = [математика] :: раунд (($ _.FreeSpace / $ _.розмір) * 100, 2) | ft

Сценарій отримав список логічних дисків, їх розміру та відсоток решти вільного простору.

Щоб використовувати цей сценарій у ядрі PowerShell, просто замініть Get-wmiobject на Отримати .

Якщо ви хочете не просто відображати інформацію про безкоштовне місце на диску, а виконати певну дію (надішліть лист, виведіть власну спалах), якщо місце менше вказаного порогу, ви можете використовувати такий сценарій PowerShekk:

$ відсотків, що знаходяться = 6
$ відсотків critcal = 3
$ Listdisk = get -wmiobject -class win32_logicaldisk
Foreach ($ диск у $ listdisk)
якщо ($ диск.Розмір -ne $ null)

$ Diskfreepace = ($ disk.FreeSpace/1 Гб).ToString ('f2')
$ Diskfreepacepercent = [математика] :: раунд (($ диск.FreeSpace/$ Disk.Розмір) * 100, 2)
If ($ diskfreepacepercent -lt $ відсотків)

$ Message = "Попередження!Що
If ($ diskfreepacepercent -lt $ відсотків critcal)

$ Message = "Попередження!Що

# Вихідна одиниця сповіщення
$ Wshell = new -Object -Comobject Wscript.Штурм
$ Output = $ wshell.Спливаюче вікно ("На диску $ ($ Disk.DeviceId) Лише $ Diskfreapace GB залишається безкоштовним, 0, $ повідомлення, 48)


У цьому сценарії встановлені порогові значення вільного простору на диску - 3 та 6%. Якщо на будь -якому з дисків відсоток вільного місця, що залишився, менший, ніж ці значення, то відображається вікно модальної інформації (ви можете робити спливаючі вікна або негайно зателефонувати у утиліту для очищення диска).

Якщо ви хочете повідомити адміністратора про проблему електронної пошти, ви можете надіслати лист через сервер SMTP (це може бути або будь-який обмін, і будь-яка інша послуга SMTP, навіть вбудована роль SMTP сервера Windows), вам потрібно Використовувати командування Send-Malmessage:

Надіслати -malmessage -to “[email protected] ”-з $ env: [email protected] ”-subject" недостатньо місця на диску $ env: computermany "-body" Disk Disk ".DeviceId) Тільки $ diskfreapace GB –CREDIential (Get -Crediential) -Smtpserver SMTP.Winitpro.ru -port 587

У цьому прикладі вам доведеться ввести ім’я та пароль користувача для виходу на сервер SMTP вручну. Щоб надіслати листи, не вводячи вручну пароль, ви можете дозволити підключитися від певних хостів у налаштуваннях SMTP SMTP SMTP. Або ви можете налаштувати Office SMTP за допомогою збережених паролів у файлі (на жаль, ви не зможете налаштувати контрольовані записи служби MSA/GMSA для виходу на поштовий сервер).

Цей сценарій PowerShell можна регулярно запускати через завдання планувальника або розроблений у вигляді служби Windows. Якщо цього господаря Windows не вистачає вільного місця, адміністратор отримає повідомлення.

Перевірка вільного місця на віддалених комп'ютерах Windows за допомогою PowerShell

Щоб запустити сценарій PS для перевірки решти вільного місця на віддаленому комп'ютері, ви можете використовувати команду WinRM Invoke-Command.

INSP-Command -ComputErname DC01, DC02, DC03 -filepath "C: \ PS \ Check Free-Disk-Space.PS1 "

Якщо сервери, в яких вам потрібно перевірити, що залишився вільний простір, знаходяться в домені, ви можете отримати їх список з Active Directory за допомогою командира Get-Domputer та запустити чековий сценарій для кожного з них:

$ Computers = (get -dcoputer -filter 'eperatingsstym -like "*windows server*" -і увімкнено -eq "true"').Назва
Підключення-командування -ComputErname $ Computers -filepath "C: \ PS \ Check Free-Disk-Space.PS1 "-ПОРРОРАРААЦІЯ SILKENTENTINEUE

Також для отримання даних WMI з віддалених комп'ютерів ви можете використовувати RemoteWmi:

Get -wmiobject -class win32_logicaldisk -computername dc01, dc02

Ця інструкція описує найпростішу систему моніторингу домашнього моніторингу на дисках, яка може бути використана для вирішення приватних проблем. Якщо у вас є багато хостів, стан яких повинен відстежувати, то, звичайно, краще використовувати повноцінну систему моніторингу (наприклад, Zabbix, PRTG, Nagion, Icinga тощо.D.).
Вирішення проблем із запуском Tlauncher
Сьогодні не так багато хороших і стабільних запусків для популярної гри Minecraft. Один з них - продукт Tlauncher, розроблений у 2013 році. Програма в...
Увімкніть VPN в опері
Огорожі: 17 червня 2021 р. Опера призупинила підтримку послуг VPN у своїх браузерах Opera and Opera GX (через блокування послуг рішенням Роскомнадзор...
FersSystemWatch - спостереження за змінами на дисках та в реєстрі
Не секрет, що навіть під час видимої бездіяльності операційна система може виконувати певні операції, створювати та видаляти файли, переписувати ключі...