18

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

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

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

6 ответов6

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"
    }

}
7

Используйте команду 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 также является хорошей альтернативой (если вы можете позволить себе оплату лицензии).
1

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

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

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
}
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 volume diskfree C:
Output:
Total # of free bytes        : 17084395520
Total # of bytes             : 249145847808
Total # of avail free bytes  : 17084395520

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .