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