ZetCode

VBScript 序列号属性

最后修改于 2025 年 4 月 9 日

VBScript 中的 SerialNumber 属性是 FileSystemObjectDrive 对象的一部分。它返回在格式化过程中分配给磁盘卷的唯一十进制数字。此数字有助于在脚本中识别和跟踪存储设备。它是只读的,不能通过编程修改。

除非驱动器被重新格式化,否则序列号将保持不变。它对于许可证验证和驱动器标识任务很有用。本教程通过实际示例涵盖 SerialNumber 的用法。

序列号属性概述

SerialNumber 属性检索驱动器的唯一标识号。此号码在卷格式化时分配。在 VBScript 脚本中,通过 Drive 对象访问该属性。

主要功能包括跨系统重启的持久标识。默认情况下,号码以十进制格式显示。它适用于所有驱动器类型,包括 HDD、SSD 和可移动媒体。理解此属性有助于创建健壮的驱动器管理脚本。

基本序列号检索

此示例演示了 SerialNumber 的最简单用法,以获取驱动器的标识号。它展示了如何访问系统驱动器的属性。脚本以十进制格式显示序列号。

basic_serialnumber.vbs
Set fso = CreateObject("Scripting.FileSystemObject")
Set drive = fso.GetDrive("C:")
WScript.Echo "Drive C: Serial Number: " & drive.SerialNumber

Set drive = Nothing
Set fso = Nothing

脚本创建一个 FileSystemObject 并获取 C: 驱动器对象。然后,它检索并显示序列号属性。输出显示了在格式化过程中分配给卷的唯一十进制标识符。

将序列号转换为十六进制

驱动器序列号通常在系统工具中以十六进制格式显示。此示例显示如何将十进制序列号转换为十六进制。结果与您在命令行工具中看到的内容相匹配。

hex_serialnumber.vbs
Set fso = CreateObject("Scripting.FileSystemObject")
Set drive = fso.GetDrive("C:")
decSerial = drive.SerialNumber
hexSerial = Hex(decSerial)

WScript.Echo "Decimal: " & decSerial
WScript.Echo "Hexadecimal: " & hexSerial

Set drive = Nothing
Set fso = Nothing

脚本检索十进制序列号,然后使用 VBScript 的 Hex 函数进行转换。这与 Windows 实用程序(如 vol 命令)中显示的格式相匹配。十六进制表示法更常用于显示目的。

检查多个驱动器序列号

此示例演示如何检索系统中所有可用驱动器的序列号。它展示了如何遍历 Drives 集合。将显示每个驱动器的字母和序列号。

all_drives_serial.vbs
Set fso = CreateObject("Scripting.FileSystemObject")
Set drives = fso.Drives

For Each drive In drives
    If drive.IsReady Then
        WScript.Echo drive.DriveLetter & ": " & drive.SerialNumber
    End If
Next

Set drives = Nothing
Set fso = Nothing

脚本枚举所有可用的驱动器并检查它们是否已准备好。对于每个准备好的驱动器,它将显示驱动器字母和序列号。IsReady 检查可防止与不可用驱动器(如空 CD-ROM)发生错误。

比较驱动器序列号

此示例演示了如何使用序列号来比较驱动器。它检查两个指定驱动器是否具有相同的序列号。此技术可以检测同一物理驱动器是否以不同的字母挂载。

compare_serial.vbs
Set fso = CreateObject("Scripting.FileSystemObject")
Set drive1 = fso.GetDrive("C:")
Set drive2 = fso.GetDrive("D:")

If drive1.SerialNumber = drive2.SerialNumber Then
    WScript.Echo "Drives have the same serial number"
Else
    WScript.Echo "Drives have different serial numbers"
End If

Set drive1 = Nothing
Set drive2 = Nothing
Set fso = Nothing

脚本检索驱动器 C: 和 D: 的序列号。它会比较它们并报告它们是否匹配。此方法对于检测镜像驱动器或多个路径指向同一物理存储非常有用。

创建驱动器清单报告

此综合示例创建了一个详细的驱动器清单报告。它收集多个属性,包括所有可用驱动器的序列号。输出经过格式化,易于阅读和记录。

drive_inventory.vbs
Set fso = CreateObject("Scripting.FileSystemObject")
Set drives = fso.Drives

WScript.Echo "Drive Inventory Report"
WScript.Echo "----------------------"
WScript.Echo "Generated: " & Now()
WScript.Echo ""

For Each drive In drives
    If drive.IsReady Then
        WScript.Echo "Drive Letter: " & drive.DriveLetter
        WScript.Echo "Serial Number: " & drive.SerialNumber
        WScript.Echo "Volume Name: " & drive.VolumeName
        WScript.Echo "File System: " & drive.FileSystem
        WScript.Echo "Total Size: " & FormatNumber(drive.TotalSize/1073741824, 2) & " GB"
        WScript.Echo "Free Space: " & FormatNumber(drive.FreeSpace/1073741824, 2) & " GB"
        WScript.Echo "----------------------"
    End If
Next

Set drives = Nothing
Set fso = Nothing

脚本生成一份包含多个驱动器属性的综合报告。序列号与容量和文件系统信息一起包含在内。输出格式化有清晰的标签和分隔符,以提高可读性。这展示了序列号在系统清单脚本中的实际应用。

来源

Drive 对象文档

在本文中,我们探讨了 VBScript 中的 SerialNumber 属性,涵盖了它的用法和实际应用。从基本检索到复杂的驱动器比较和清单任务,这些示例展示了它的多功能性。有了这些知识,您就可以通过可靠的设备标识来增强您的驱动器管理脚本。

作者

我叫 Jan Bodnar,是一名充满激情的程序员,拥有多年的编程经验。自 2007 年以来,我一直在撰写编程文章。到目前为止,我已撰写了 1400 多篇文章和 8 本电子书。我在教授编程方面有八年以上的经验。

列出所有 VBScript 教程