Відповіді:
Використовуючи 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"
}
}
Використовуйте команду 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"
Якщо ви перебуваєте в домені, ви, ймовірно, зможете зробити щось із WMI ( приклад WMI ). Якщо ви не в домені, ви можете скористатися двома способами віддаленого моніторингу:
хлопці, я також прийшов із рішенням, використовуючи ідею 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 об'єм диску без С: Вихід: Всього вільних байтів: 17084395520 Загальна кількість байтів: 249145847808 Всього вільних байтів: 17084395520
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
}