Powershell – Подсчет свободного места на дисках

powershell logo
Наиболее часто возникающая у многих проблема: «Закончилось свободное место на жестком диске.»

Каждый хотя бы раз с ней сталкивался и по разному решал эту проблему, но малый процент задумывался о предупреждении её.

Если в вашем подчинении находится десяток-другой компьютеров то пройтись по ним и посмотреть и посмотреть на состояние дисков не составит труда. а если компьютеров больше ста, например 500 или 600 или 1000 и больше?

Предлагаю рассмотреть скрипт который собирает данные о свободном месте на дисках.

Получить данные о свободном месте на нескольких компьютерах довольно легко, в WMI есть класс Win32_LogicalDisk и одним из его атрибутов является freespace.

Powershell – наше все…

Им то мы и воспользуемся. Нужно немного времени и терпения.

Итак.
1. готовим файл hostlist.txt вот такого содержания

host1
host2
host3

2. Создаем powershell-скрипт

Get-WMIObject Win32_LogicalDisk -filter "DriveType=3" -computer (Get-Content hostlist.txt) | Select SystemName,DeviceID,@{Name="size(GB)";Expression={"{0:N1}" -f($_.size/1gb)}},@{Name="freespace(GB)";Expression={"{0:N1}" -f($_.freespace/1gb)}} | ft

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

Если результат необходимо отправить в файл слегка меняем скрипт.

Get-WMIObject Win32_LogicalDisk -filter "DriveType=3" -computer (Get-Content hostlist.txt) | Select SystemName,DeviceID,@{Name="size(GB)";Expression={"{0:N1}" -f($_.size/1gb)}},@{Name="freespace(GB)";Expression={"{0:N1}" -f($_.freespace/1gb)}} | ft | Out-File result.txt

При необходимости готовый отчет можно отправить администратору на email.

Буду благодарен, если поделитесь этой статьей:

Приглашаю присоединиться ко мне в следующих сервисах:
facebook Google Plus вКонтакте Twitter
Если Вам понравилась статья, то вы можете подписаться на RSS. А также бесплатно подписаться по E-mail и получать актуальную информацию в числе первых.
Получать обновления на email

Вы можете оставить комментарий.

9 Комментариев »

 
  • 1# kop (2 комм.):

    Спасибо за скрипт=)
    Возникает вопрос, есть ли возможность инфу, которая была получена, отправить на почту или sms средствами PoSh?

      Цитировать

    • 2# admin (36 комм.):

      Конечно методики есть.
      В ближайшее время я постараюсь описать процедуру отправки почты (доступна как авторизованная отправка так и анонимная).

      Для обмена данными с SMS-ом предусмотрен формат IDMIF и NOIDMIF, этот вопрос так же будет затронут, но чуть позже.

        Цитировать

  • 4# Евгений (8 комм.):

    Сергей, добрый день!
    Возможно вы что-то подскажите, каким образом можно вывести информацию о свободном месте на сетевоим диске на сайт в локальной сети. Чтобы пользователи понимали, что документ не сохраняется из-за отсутсвия свободно пространства. Заранее спасибо

      Цитировать

  • 6# Александр (16 комм.):

    Доброго времени суток.
    Спасибо за скрипт.
    Но есть небольшой вопрос.
    Как сделать так чтобы подставляя «-computer 192.168.0.250″ (например)
    еще добавить логи и пароль для доступа к этому компьютеру (хочу проверять свободное место в разных сетях)

      Цитировать

    • 7# Сергей Мариничев (535 комм.):

      Примерно так.

      Get-WMIObject Win32_LogicalDisk -filter «DriveType=3″ -computer (read-Host «Enter HostName ot IP») -Credential (Get-Credential) | Select SystemName,DeviceID,@{Name=»size(GB)»;Expression={«{0:N1}» -f($_.size/1gb)}},@{Name=»freespace(GB)»;Expression={«{0:N1}» -f($_.freespace/1gb)}} | ft | Out-File result.txt

      Добавляется только read-Host и Get-Credential

        Цитировать

  • 8# Александр (16 комм.):

    Ммм… read-host я не добавляю, пишу вручную 1 ip добавил -Credential (Get-Credential) да у меня запросило логин и пароль, если ввожу то все работает, а как реализовать это в авто режиме? ввод логина и пароля. Извините за навязчивость.

      Цитировать

 

Добавить комментарий

XHTML: Вы можете использовать тэги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>