web-dev-qa-db-ja.com

リモートサーバーのウィンドウでディスク容量を確認する

私はWindowsで作業していますが、コマンドラインを通じてリモートWindowsサーバーのディスク容量を調べたいと思っています。

例:私は@localhostですが、サーバー172.68.68.68のD:ドライブが10 GBより大きいかどうかを知りたいです。どうすれば確認できますか?

すべてのサーバーがWindows OSを実行している

18
rocko

Powershellを使用すると、次のコマンドを使用できます。

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

server1、server2、etcをリモートサーバー名またはIPに置き換えます。

出力は次のようになります。

enter image description here

必要に応じて、| Export-Csv -Path .\drives.csvをスクリプトの最後に追加して、Excelで使用するためにファイルをコンマ区切り値(CSV)ファイルに出力できます。その場合、Excelを開くときに、Excelのドライブサイズの列を数値としてフォーマットする必要があります。

ちょっと笑って、Active Directory内のすべてのサーバーでタスクを実行する次のPowerShellスクリプトを作成しました。

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

}
18
Keltari

コマンド fsutil を使用します。

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

出力は次のようになります。

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

空きバイトのある行のみを取得するには、次を使用できます。

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

ドメイン内にいる場合は、おそらくWMI( WMIの例 )で何かを実行できるでしょう。ドメインに属していない場合、リモート監視には次の2つの方法があります。

  • SNMPをセットアップし( ガイド付きの優れたドキュメント )、SNMPデーモンをポーリングするスクリプトを記述します。
  • 監視製品を使用してください。過去に OpsviewNinja を使用しました。 Microsoft SCOMも良い選択肢です(ライセンス料を支払う余裕がある場合)。
3
mtak

ネットワーク共有にアクセスでき、Cygwinがインストールされている場合は、次のコマンドを実行できます。

# 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

私もfsutilと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バイト:17084395520 
0
rocko