Проверка емкости диска в окнах удаленных серверов

18

Я работаю в Windows, и я хочу через командную строку выяснить емкость диска удаленных серверов Windows.

Например: я @localhost, теперь я хочу знать, больше ли диск D: 172.68.68.68 сервера на 10 ГБ или нет. Как я могу проверить?

Все серверы работают под управлением ОС Windows

Роко
источник

Ответы:

16

Используя Powershell, вы можете использовать следующую команду:

Get-WmiObject -Class win32_logicalDisk -ComputerName server1, server2, server3, etc | Select-Object pscomputername, deviceid, freespace, size

Замените server1, server2 и т. Д. Именами или IP-адресами удаленных серверов.

Вывод выглядит так:

введите описание изображения здесь

Если вы хотите, вы можете добавить | Export-Csv -Path .\drives.csvв конец сценария вывод файла в файл с разделителями-запятыми (CSV) для использования с Excel. Если вы это сделаете, то при открытии Excel вам нужно будет отформатировать столбцы размера диска в Excel в виде чисел.

Просто для смеха я написал сценарий PowerShell, который будет выполнять задачу на всех серверах в Active Directory:

$ErrorActionPreference= 'silentlycontinue'

Get-ADComputer -Filter 'OperatingSystem -like "*Server*"' -Properties * | Select-Object Name |

ForEach-Object {
    If (Test-Connection $_.Name -Count 1){
        Get-WmiObject -Class win32_logicalDisk -ComputerName $_.Name | 
        Select-Object pscomputername, deviceid, freespace, size
    }
    else {
        Write-host $_.Name " Connection Error"
    }

}
Keltari
источник
8

Используйте команду fsutil:

fsutil volume diskfree C:
fsutil volume diskfree \\server\share

Выход будет как:

Total # of free bytes        : 851127304192
Total # of bytes             : 2147480485888
Total # of avail free bytes  : 851127304192

Чтобы получить только строку со свободными байтами, вы можете использовать:

fsutil volume diskfree C: | find /i "avail free"
Иоахим Мардер
источник
3

Если вы находитесь в домене, вы, вероятно, сможете что-то сделать с WMI ( пример WMI ). Если вы не находитесь в домене, вы можете пойти двумя путями для удаленного мониторинга:

  • Настройте SNMP ( отличный документ с руководством ) и напишите сценарии для опроса демона SNMP.
  • Используйте продукт для мониторинга. Я использовал Opsview и Ninja в прошлом. Microsoft SCOM также является хорошей альтернативой (если вы можете позволить себе оплату лицензии).
mtak
источник
1

Если у вас есть доступ к общему сетевому ресурсу и у вас установлен Cygwin, вы можете выполнить эту команду:

# df -h //myserver/shareddrive Filesystem Size Used Avail Use% Mounted on - 25G 13G 12G 52% //myserver/shareddrive

LatinSuD
источник
0

ребята, я также пришел с решением, используя идеи fsutil и telnet:

<package>

  <job id="vbs">

  <script language="VBScript">

     set WshShell = WScript.CreateObject("WScript.Shell")
     WshShell.Run "telnet 182.56.32.23 -l work"
     WScript.Sleep 500
     WshShell.AppActivate "Telnet"
     WScript.Sleep 500
     WshShell.SendKeys "y"
     WshShell.SendKeys "~"      
     WScript.Sleep 500
     WshShell.SendKeys "helloworld"
     WScript.Sleep 500
     WshShell.SendKeys "~"  
     WScript.Sleep 500
     WshShell.SendKeys "C:\Users\work2\Desktop\diskcheck.bat"   
     WScript.Sleep 200
     WshShell.SendKeys "~"

  </script>

 </job>

</package>

diskcheck.bat:

fsutil том без диска C:
Выход:
Общее количество свободных байтов: 17084395520
Общее количество байтов: 249145847808
Всего # свободных байт: 17084395520
Роко
источник
какие-либо улучшения?
Rocko
0
Function GetRemoteDiskSpace (
[String]$TargetComputer,
[String]$Drive
)
{
$Drive = New-PSDrive -Name K -PSProvider FileSystem -Root "\\$TargetComputer\$Drive$" -Persist
$Info = Get-PSDrive $Drive 
$Free = $Info.Free /1GB
Remove-PSDrive -Name $drive -PSProvider FileSystem

return $Free
}
Райан
источник
1
Добро пожаловать в Супер пользователя! Ваш вклад приветствуется, но можете ли вы дать объяснение вышеупомянутой функции? :)
bertieb