我在 Windows 中工作,我想通过命令行找出远程 Windows 服务器的磁盘容量。
例如:我是@localhost,现在我想知道服务器 172.68.68.68 的 D: 驱动器是否大于 10 GB。我该如何检查?
所有服务器均运行 Windows 操作系统
答案1
使用 Powershell,您可以使用以下命令:
Get-WmiObject -Class win32_logicalDisk -ComputerName server1, server2, server3, etc | Select-Object pscomputername, deviceid, freespace, size
代替服务器 1、服务器 2 等使用远程服务器名称或 IP。
输出如下所示:
如果需要,您可以| Export-Csv -Path .\drives.csv
在脚本末尾添加,以将文件输出为逗号分隔值 (CSV) 文件,以供 Excel 使用。如果这样做,当您打开 Excel 时,您需要将 Excel 中的驱动器大小列格式化为数字。
只是为了好玩,我编写了这个 PowerShell 脚本,它将在 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"
}
}
答案2
使用命令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"
答案3
答案4
伙计们,我也想出了一个使用 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>
磁盘检查.bat:
fsutil 卷可用磁盘 C: 输出: 可用字节总数:17084395520 总字节数:249145847808 可用字节总数:17084395520