У цій статті ми покажемо, як використовувати PowerShell для моніторингу вільного простору на диску сервера (комп'ютер) з Windows та попередженням адміністратора (спливаюче вікно або літери), якщо значення порогового значення буде перевищене.
Зміст:
- PowerShell: Перевірка вільного місця на диску через клас WMI
- Перевірка вільного місця на віддалених комп'ютерах Windows за допомогою PowerShell
PowerShell: Перевірка вільного місця на диску через клас WMI
Ви можете отримати інформацію про логічні диски в Windows за допомогою класу WIN32_LOGICALDISK WMI.
Наступна команда відобразить всю інформацію про логічні диски комп'ютера:
Get -wmiobject -class win32_logicaldisk
Термін "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
Цей сценарій 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