【问题标题】:Adding a summary report and disk information to VB Script将摘要报告和磁盘信息添加到 VB 脚本
【发布时间】:2013-04-06 07:03:30
【问题描述】:

我希望有人可以帮助我处理这段代码。我想在这个脚本中添加两件事,但似乎根本无法让它工作。

该脚本运行良好,但无法正常工作的是尝试添加磁盘信息并尝试创建磁盘总大小的摘要报告。

最后我试图输出什么

wmic diskdrive list brief /format:list

会给你。

类似这样的:

Caption=WDC WD2500BEKT-75PVMT1
DeviceID=\\.\PHYSICALDRIVE0
Model=WDC WD2500BEKT-75PVMT1
Partitions=1
Size=250056737280

这是目前的脚本

Option Explicit

const strComputer = "."
const strReport = "c:\path\to\file"


Dim objWMIService, objItem, colItems 
Dim strDriveType, strDiskSize, txt

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_LogicalDisk WHERE        DriveType=3")
txt = "Drive" & vbtab & "Size" & vbtab & "Used" & vbtab & "Free" & vbtab & "Free(%)" & vbcrlf
For Each objItem in colItems

DIM pctFreeSpace,strFreeSpace,strusedSpace

pctFreeSpace = INT((objItem.FreeSpace / objItem.Size) * 1000)/10
strDiskSize = Int(objItem.Size /1073741824) & "Gb"
strFreeSpace = Int(objItem.FreeSpace /1073741824) & "Gb"
strUsedSpace = Int((objItem.Size-objItem.FreeSpace)/1073741824) & "Gb"
txt = txt & objItem.Name & vbtab & strDiskSize & vbtab & strUsedSpace & vbTab & strFreeSpace & vbtab & pctFreeSpace & vbcrlf

Next

writeTextFile txt, strReport
wscript.echo "Report written to " & strReport & vbcrlf & vbcrlf & txt

' Procedure to write output to a text file
private sub writeTextFile(byval txt,byval strTextFilePath)
Dim objFSO,objTextFile

set objFSO = createobject("Scripting.FileSystemObject")

set objTextFile = objFSO.CreateTextFile(strTextFilePath)

objTextFile.Write(txt)

objTextFile.Close
SET objTextFile = nothing
end sub

【问题讨论】:

    标签: windows vbscript


    【解决方案1】:

    wmic 调用和您的脚本做的事情完全不同。前者查询Win32_DiskDrive 类以收集有关物理磁盘 的信息,而后者查询Win32_LogicalDisk 类以收集有关 的信息。

    您可以使用以下内容重现 wmic 命令的输出:

    Set wmi = GetObject("winmgmts://./root/cimv2")
    For Each disk In wmi.ExecQuery("SELECT * FROM Win32_DiskDrive")
      WScript.Echo "Caption=" & disk.Caption & vbNewLine _
        & "DeviceID=" & disk.DeviceID & vbNewLine _
        & "Model=" & disk.Model & vbNewLine _
        & "Partitions=" & disk.Partitions & vbNewLine _
        & "Size=" & disk.Size
    Next
    

    但是,此查询返回的大小是物理磁盘的原始容量。在此级别,您无法区分块是“空闲”还是“已使用”。这些是适用于文件系统的概念。在该级别上,扇区包含或不包含一个或多个文件或文件片段。当它不包含任何文件时它是“免费的”,否则是“使用的”。但是,在该级别上,您不会获得有关“分区”的任何信息,因为它们存在于较低级别(分区包含文件系统)。

    您需要做的是确定您真正想要报告的信息,然后从相关的 WMI 类中选择适当的属性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-24
      • 1970-01-01
      • 2015-12-23
      • 2017-06-11
      相关资源
      最近更新 更多