Vérification de la capacité du disque dans les fenêtres des serveurs distants

18

Je travaille dans Windows et je veux le savoir via la capacité de disque en ligne de commande des serveurs Windows distants.

Par exemple: je suis @localhost, maintenant je veux savoir si le lecteur D: du serveur 172.68.68.68 est supérieur à 10 Go ou non. Comment puis-je vérifier?

Tous les serveurs exécutent le système d'exploitation Windows

rocko
la source

Réponses:

18

À l'aide de Powershell, vous pouvez utiliser la commande suivante:

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

Remplacez server1, server2, etc. par les noms de serveur distant ou les adresses IP.

La sortie ressemble à ceci:

entrez la description de l'image ici

Si vous le souhaitez, vous pouvez ajouter | Export-Csv -Path .\drives.csvà la fin du script pour exporter le fichier vers un fichier CSV (valeurs séparées par des virgules) à utiliser avec Excel. Si vous le faites, lorsque vous ouvrirez Excel, vous devrez formater les colonnes de taille de lecteur dans Excel sous forme de nombres.

Juste pour rire, j'ai écrit ce script PowerShell qui effectuera la tâche sur tous les serveurs dans 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
la source
9

Utilisez la commande fsutil:

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

La sortie sera comme:

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

Pour obtenir uniquement la ligne avec les octets libres, vous pouvez utiliser:

fsutil volume diskfree C: | find /i "avail free"
Joachim Marder
la source
Pour info, cela nécessitera des informations d'identification administratives.
Bink
3

Si vous êtes dans un domaine, vous pourrez probablement faire quelque chose avec WMI ( exemple WMI ). Si vous n'êtes pas dans un domaine, vous pouvez suivre deux méthodes pour la surveillance à distance:

  • Configurez SNMP ( excellent doc avec guide ) et écrivez des scripts pour interroger le démon SNMP.
  • Utilisez un produit de surveillance. J'ai utilisé Opsview et Ninja dans le passé. Microsoft SCOM est également une bonne alternative (si vous pouvez vous permettre les frais de licence).
mtak
la source
1

Si vous avez accès au partage réseau et que Cygwin est installé, vous pouvez exécuter cette commande:

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

LatinSuD
la source
0

les gars, je suis également venu avec une solution en utilisant l'idée de fsutil et 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 sans disque C:
Production:
Nombre total d'octets gratuits: 17084395520
Nombre total d'octets: 249145847808
Nombre total d'octets libres disponibles: 17084395520
rocko
la source
des améliorations?
rocko
Je n'ai jamais vu personne installer un serveur telnet sur Windows, même celui intégré. D'autant plus que Telnet est depuis longtemps considéré comme peu sûr.
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
la source
1
Bienvenue sur Super User! Votre contribution est la bienvenue, mais pouvez-vous fournir une explication de la fonction ci-dessus? :)
bertieb