Verificando a capacidade do disco nas janelas dos servidores remotos

18

Estou trabalhando no Windows e quero descobrir através da capacidade de disco da linha de comando dos servidores Windows remotos.

Por exemplo: eu sou @localhost, agora quero saber se a unidade D: do servidor 172.68.68.68 tem 10 GB ou mais. Como posso verificar?

Todos os servidores estão executando o Windows OS

rocko
fonte

Respostas:

18

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 server1, server2, etc. pelos nomes ou IPs remotos do servidor.

A saída é assim:

insira a descrição da imagem aqui

Se desejar, você pode adicionar | Export-Csv -Path .\drives.csvao final do script a saída do arquivo para um arquivo de valor separado por vírgula (CSV) para uso com o Excel. Se você fizer isso, quando abrir o Excel, precisará formatar as colunas de tamanho da unidade no Excel como números.

Apenas para rir, escrevi este script do PowerShell que executará a tarefa em todos os servidores no 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
fonte
9

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, você pode usar:

fsutil volume diskfree C: | find /i "avail free"
Joachim Marder
fonte
Para sua informação, isso exigirá credenciais administrativas.
Bink
3

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

  • Configure o SNMP ( excelente documento 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).
mtak
fonte
1

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

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

LatinSuD
fonte
0

galera eu também vim com uma solução usando a ideia 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:

volume fsutil diskfree C:
Resultado:
Nº total de bytes livres: 17084395520
Nº total de bytes: 249145847808
Nº total de bytes gratuitos disponíveis: 17084395520
rocko
fonte
alguma melhoria?
rocko
Eu nunca vi alguém instalar um servidor Telnet no Windows, mesmo o interno. Especialmente, desde que o telnet é considerado inseguro há muito tempo.
Keltari 11/11
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
fonte
11
Bem-vindo ao Super Usuário! Sua contribuição é bem-vinda, mas você pode fornecer uma explicação da função acima? :)
bertieb