VBScript SerialNumber Property
last modified April 9, 2025
The SerialNumber property in VBScript is part of the
Drive object within the FileSystemObject. It returns
a unique decimal number assigned to a disk volume during formatting. This number
helps identify and track storage devices in scripts. It's read-only and cannot
be modified programmatically.
The serial number remains constant unless the drive is reformatted. It's useful
for license verification and drive identification tasks. This tutorial covers
SerialNumber with practical examples to demonstrate its usage.
SerialNumber Property Overview
The SerialNumber property retrieves a drive's unique identification
number. This number is assigned when the volume is formatted. The property is
accessed through a Drive object in VBScript scripting.
Key features include persistent identification across system reboots. The number is displayed in decimal format by default. It works with all drive types including HDDs, SSDs, and removable media. Understanding this property helps create robust drive management scripts.
Basic Serial Number Retrieval
This example demonstrates the simplest use of SerialNumber to get
a drive's identification number. It shows how to access the property for the
system drive. The script displays the serial number in decimal format.
Set fso = CreateObject("Scripting.FileSystemObject")
Set drive = fso.GetDrive("C:")
WScript.Echo "Drive C: Serial Number: " & drive.SerialNumber
Set drive = Nothing
Set fso = Nothing
The script creates a FileSystemObject and gets the C: drive object.
It then retrieves and displays the serial number property. The output shows the
unique decimal identifier assigned to the volume during formatting.
Converting Serial Number to Hexadecimal
Drive serial numbers are often displayed in hexadecimal format in system tools. This example shows how to convert the decimal serial number to hexadecimal. The result matches what you'd see in command-line tools.
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
The script retrieves the decimal serial number then converts it using VBScript's
Hex function. This matches the format shown in Windows utilities
like vol command. The hexadecimal representation is more commonly
used for display purposes.
Checking Multiple Drive Serial Numbers
This example shows how to retrieve serial numbers for all available drives on
a system. It demonstrates iterating through the Drives collection.
Each drive's letter and serial number are displayed.
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
The script enumerates all available drives and checks if they're ready. For each
ready drive, it displays the drive letter and serial number. The
IsReady check prevents errors with unavailable drives like empty
CD-ROMs.
Comparing Drive Serial Numbers
This example demonstrates using serial numbers to compare drives. It checks if two specified drives have the same serial number. This technique can detect when the same physical drive is mounted with different letters.
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
The script retrieves serial numbers for drives C: and D:. It compares them and reports whether they match. This approach is useful for detecting mirrored drives or when multiple paths point to the same physical storage.
Creating a Drive Inventory Report
This comprehensive example creates a detailed drive inventory report. It collects multiple properties including serial numbers for all available drives. The output is formatted for easy reading and logging.
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
The script generates a comprehensive report with multiple drive properties. Serial numbers are included alongside capacity and filesystem information. The output is formatted with clear labels and separators for readability. This demonstrates practical use of serial numbers in system inventory scripts.
Source
In this article, we have explored the SerialNumber property in
VBScript, covering its usage and practical applications. From basic retrieval to
complex drive comparison and inventory tasks, these examples demonstrate its
versatility. With this knowledge, you can enhance your drive management scripts
with reliable device identification.
Author
List all VBScript tutorials.