web-dev-qa-db-fra.com

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

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

Par exemple, je suis @ localhost, je veux maintenant 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 fonctionnent sous Windows OS

18
rocko

À 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:

enter image description here

Si vous le souhaitez, vous pouvez ajouter | Export-Csv -Path .\drives.csv à la fin du script pour générer le fichier dans un fichier CSV (valeurs séparées par des virgules) à utiliser avec Excel. Si vous le faites, lorsque vous ouvrez 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 d’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"
    }

}
16
Keltari

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 gratuits, vous pouvez utiliser:

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

Si vous êtes dans un domaine, vous pourrez probablement faire quelque chose avec WMI ( exemple WMI ). Si vous ne vous trouvez pas dans un domaine, vous pouvez procéder de deux manières pour la surveillance à distance:

  • Configurez SNMP ( une excellente documentation avec guide ) et écrivez des scripts pour interroger le démon SNMP.
  • Utilisez un produit de surveillance. J'ai déjà utilisé Opsview et Ninja . Microsoft SCOM est également une bonne alternative (si vous pouvez vous permettre les frais de licence).
3
mtak

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

1
LatinSuD
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
Ryan

les gars je suis aussi 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: 
 Sortie: 
 Nombre total d'octets libres: 17084395520 
 Nombre total d'octets: 249145847808 
 Nombre total de personnes disponibles gratuitement octets: 17084395520 
0
rocko