0

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

该脚本工作正常,但不起作用的是尝试添加磁盘信息并尝试创建磁盘总大小的摘要报告。

最后,我试图输出什么

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
4

1 回答 1

2

调用和你的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 类中选择适当的属性。

于 2013-04-05T23:03:30.523 回答