Uzak sunucuların pencerelerinde disk kapasitesini kontrol etme


18

Pencerelerde çalışıyorum ve uzak pencerelerin sunucularının komut satırı disk kapasitesini bulmak istiyorum.

Örn: Ben @localhost'um, şimdi D: sunucusunun sürücüsünün 172.68.68.68'in 10 GB'den büyük olup olmadığını bilmek istiyorum. Nasıl kontrol edebilirim?

Tüm sunucular Windows işletim sistemi kullanıyor

Yanıtlar:


16

Powershell'i kullanarak, aşağıdaki komutu kullanabilirsiniz:

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

Değiştir vb sunucu1, Server2, uzak sunucu isimleri veya IP'leri ile.

Çıktı şöyle görünür:

görüntü tanımını buraya girin

İsterseniz | Export-Csv -Path .\drives.csv, dosyayı Excel ile kullanmak üzere virgülle ayrılmış bir değer (CSV) dosyasına vermek için komut dosyasının sonuna ekleyebilirsiniz . Bunu yaparsanız, Excel'i açtığınızda, sürücü boyutu sütunlarını Excel'de sayı olarak biçimlendirmeniz gerekir.

Sadece kıkırdamalar için, görevi Active Directory'deki tüm sunucularda gerçekleştirecek bu PowerShell betiğini yazdım:

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

}

8

Komutu kullanın fsutil:

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

Çıktı şöyle olacak:

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

Yalnızca ücretsiz baytların bulunduğu satırı almak için:

fsutil volume diskfree C: | find /i "avail free"

3

Eğer bir etki alanındaysanız, muhtemelen WMI ile bir şeyler yapabilirsiniz ( WMI örneği ). Etki alanında değilseniz, uzaktan izleme için iki yol kullanabilirsiniz:

  • SNMP'yi ( kılavuzlu mükemmel doc) kurun ve SNMP arka planını yoklamak için komut dosyaları yazın.
  • Bir izleme ürünü kullanın. Geçmişte Opsview ve Ninja'yı kullandım . Microsoft SCOM da iyi bir alternatiftir (lisans ücretlerini karşılayabiliyorsanız).

1

Ağ paylaşımına erişiminiz varsa ve Cygwin'i yüklediyseniz bu komutu yapabilirsiniz:

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


0

Ayrıca fsutil ve telnet fikrini kullanarak bir çözüm buldum.

<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 birimi disksiz C:
Çıktı:
Toplam serbest bayt sayısı: 17084395520
Toplam bayt sayısı: 249145847808
Toplam boş bayt sayısı: 17084395520

herhangi bir gelişme var mı?
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
Süper Kullanıcıya Hoşgeldiniz! Katkınız açıktır, ancak yukarıdaki işlevin bir açıklamasını yapabilir misiniz? :)
bertieb
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.