Überprüfen der Festplattenkapazität in Fenstern von Remoteservern

18

Ich arbeite in Windows und möchte über die Befehlszeile die Festplattenkapazität von Windows-Remoteservern ermitteln.

Zum Beispiel: Ich bin @localhost, jetzt möchte ich wissen, ob D: Laufwerk des Servers 172.68.68.68 größer als 10 GB ist oder nicht. Wie kann ich überprüfen?

Auf allen Servern wird Windows ausgeführt

rocko
quelle

Antworten:

18

Mit Powershell können Sie den folgenden Befehl verwenden:

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

Ersetzen Sie server1, server2 usw. durch die Namen oder IP- Adressen des Remoteservers .

Die Ausgabe sieht folgendermaßen aus:

Bildbeschreibung hier eingeben

Wenn Sie möchten, können Sie | Export-Csv -Path .\drives.csvdie Datei am Ende des Skripts in eine CSV-Datei (Comma Separated Value) zur Verwendung mit Excel ausgeben. Wenn Sie dies tun, müssen Sie beim Öffnen von Excel die Spalten mit der Laufwerksgröße in Excel als Zahlen formatieren.

Nur zum Kichern habe ich dieses PowerShell-Skript geschrieben, das die Aufgabe auf allen Servern in Active Directory ausführt:

$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
quelle
9

Verwenden Sie den Befehl fsutil:

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

Die Ausgabe wird wie folgt aussehen:

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

Um nur die Zeile mit den freien Bytes zu erhalten, können Sie Folgendes verwenden:

fsutil volume diskfree C: | find /i "avail free"
Joachim Marder
quelle
Zu Ihrer Information, dies erfordert administrative Anmeldeinformationen.
Bink
3

Wenn Sie sich in einer Domäne befinden, können Sie wahrscheinlich etwas mit WMI tun ( WMI-Beispiel ). Wenn Sie sich nicht in einer Domäne befinden, haben Sie zwei Möglichkeiten zur Fernüberwachung:

  • Richten Sie SNMP ( exzellentes Dokument mit Anleitung ) ein und schreiben Sie Skripte, um den SNMP-Dämon abzufragen.
  • Verwenden Sie ein Überwachungsprodukt. Ich habe in der Vergangenheit Opsview und Ninja verwendet . Microsoft SCOM ist auch eine gute Alternative (wenn Sie sich die Lizenzgebühren leisten können).
mtak
quelle
1

Wenn Sie Zugriff auf die Netzwerkfreigabe haben und Cygwin installiert haben, können Sie diesen Befehl ausführen:

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

LatinSuD
quelle
0

Jungs, ich kam auch mit einer Lösung mit Idee von fsutil und 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:
Ausgabe:
Gesamtanzahl der freien Bytes: 17084395520
Gesamtanzahl der Bytes: 249145847808
Gesamtanzahl der verfügbaren freien Bytes: 17084395520
rocko
quelle
irgendwelche Verbesserungen?
Rocko
Ich habe noch nie jemanden gesehen, der einen Telnet-Server unter Windows installiert hat, auch nicht den eingebauten. Zumal Telnet längst als unsicher gilt.
Keltari
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
}
Ryan
quelle
1
Willkommen bei Super User! Ihr Beitrag ist willkommen, aber können Sie eine Erklärung zu der oben genannten Funktion abgeben? :)
Bertieb