Verificando a capacidade do disco nas janelas dos servidores remotos

15

Estou trabalhando no Windows e quero descobrir por meio da capacidade de disco de linha de comando de servidores Windows remotos.

Por ex: eu sou @localhost, agora eu quero saber se a unidade D: do servidor 172.68.68.68 é maior que 10 GB ou não. Como posso verificar?

Todos os servidores estão executando o sistema operacional Windows

    
por rocko 10.06.2014 / 11:23

6 respostas

15

Usando o Powershell, você pode usar o seguinte comando:

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

Substitua servidor1, servidor2, etc pelos nomes ou IPs do servidor remoto.

A saída é assim:

Sedesejar,vocêpodeadicionar|Export-Csv-Path.\drives.csvaofinaldoscriptparaenviaroarquivoparaumarquivodevaloresseparadosporvírgula(CSV)parausocomoExcel.Sefizerisso,aoabriroExcel,seránecessárioformatarascolunasdetamanhodaunidadenoExcelcomonúmeros.

Apenaspararisos,euescreviestescriptdoPowerShellqueexecutaráatarefaemtodososservidoresnoActiveDirectory:

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

}
    
por 10.06.2014 / 15:52
6

Use o comando fsutil :

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

A saída será como:

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

Para obter apenas a linha com os bytes livres que você pode usar:

fsutil volume diskfree C: | find /i "avail free"
    
por 10.06.2014 / 15:20
3

Se você estiver em um domínio, provavelmente conseguirá fazer algo com o WMI ( exemplo de WMI ). Se você não está em um domínio, pode seguir duas formas de monitoramento remoto:

  • Configure o SNMP ( documento excelente com guia ) e escreva scripts para pesquisar o daemon SNMP .
  • Use um produto de monitoramento. Eu usei Opsview e Ninja no passado. O Microsoft SCOM também é uma boa alternativa (se você puder pagar as taxas de licença).
por 10.06.2014 / 11:35
1

Se você tiver acesso ao compartilhamento de rede e tiver o Cygwin instalado, poderá fazer este comando:

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

    
por 10.06.2014 / 11:38
0

galera também vim com uma solução usando idea de fsutil e 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:
Output:
Total # of free bytes        : 17084395520
Total # of bytes             : 249145847808
Total # of avail free bytes  : 17084395520
    
por 16.06.2014 / 06:24
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
}
    
por 09.04.2018 / 17:36