我希望有人可以帮我解决这个问题。我想在这个脚本中添加两个东西,但似乎根本无法使它工作。
该脚本运行正常,但无法正常工作的是尝试添加磁盘信息并尝试为磁盘总大小创建摘要报告。
在它的最后我试图输出什么
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
答案 0 :(得分: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类中选择适当的属性。