私はWindowsで作業していますが、コマンドラインを通じてリモートWindowsサーバーのディスク容量を調べたいと思っています。
例:私は@localhostですが、サーバー172.68.68.68のD:ドライブが10 GBより大きいかどうかを知りたいです。どうすれば確認できますか?
すべてのサーバーがWindows OSを実行している
Powershellを使用すると、次のコマンドを使用できます。
Get-WmiObject -Class win32_logicalDisk -ComputerName server1, server2, server3, etc | Select-Object pscomputername, deviceid, freespace, size
server1、server2、etcをリモートサーバー名またはIPに置き換えます。
出力は次のようになります。
必要に応じて、| 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"
}
}
コマンド 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"
ドメイン内にいる場合は、おそらくWMI( WMIの例 )で何かを実行できるでしょう。ドメインに属していない場合、リモート監視には次の2つの方法があります。
ネットワーク共有にアクセスでき、Cygwinがインストールされている場合は、次のコマンドを実行できます。
# 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
}
私も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