While browsing through the MDT 2012 scripts, I noticed that here and there MDT uses functions included in the Microsoft.BDD.Utility.dll which is loaded by ZTIUtility.vbs. A good example is the ZTIGather.wsf where the following function is used to determine whether the system is running UEFI or native BIOS.
‘ Determine if we are running UEFI
bIsUEFI = FALSE
On Error Resume Next
bIsUEFI = oUtility.BDDUtility.IsUEFI
On Error Goto 0
So I took Nir Sofer’s DLL Export Viewer to find out what other functions are included in Microsoft.BDD.Utility.dll
The below table lists the functions included.
Function |
Description |
GetErrorMessage |
(no references found in scripts( |
HiddenPartitionsToDrives |
Creates an array of all local partitions, including hidden ones such as the Recovery partition |
Is64Bit |
‘If the processor is running a x86 OS, then there is *Still* the possibility that it can support a x64 OS. We need to run a quick processor check to see if it supports x64. |
IsAdmin |
Validate we are running as an administrator |
IsHypervisorRunning |
Get Virtualization details |
IsKnownToDNS |
(no references found in scripts and couldn’t |
IsUEFI |
Detect whether system uses UEFI or BIOS |
KeepAlive |
Used in MDT scripts to prevent the system from going into sleep while the task sequence is running. |
Supports64Bit |
Checks whether system supports 64 Bit |
SupportsNX |
Checks whether system supports NX |
SupportsVT |
Checks whether the system supports Virtualization Technology |
To make use of these functions outside of the MDT framework, you need the Microsoft.BDD.Utility.dll that is stored under <Deploymentshare>\Tools\x86 or <Deploymentshare>\Tools\x64
Below is a simple wsh script that demonstrates the return values of some of the functions listed above.
‘ utilityfunctions.vbs
Set oShell = CreateObject("WScript.Shell")
sBDDUtility = ScriptDir & "\Microsoft.BDD.Utility.dll"
oShell.Run "regsvr32.exe /s """ & sBDDUtility & """", 0, true
Set oBDDUtility = CreateObject("Microsoft.BDD.Utility")
Set BDDUtility = oBDDUtility
bIsUEFI = FALSE
bIsUEFI = BDDUtility.IsUEFI
bIsAdmin = FALSE
bIsAdmin = BDDUtility.IsAdmin
bIsHyperVirsorRunning = FALSE
bIsHyperVirsorRunning = BDDUtility.IsHypervisorRunning
bSupportsNX = FALSE
bSupportsNX = BDDUtility.SupportsNX
bSupportsVT = FALSE
bSupportsVT = BDDUtility.SupportsVT
bSupports64Bit = FALSE
bSupports64Bit = BDDUtility.Supports64Bit
bIs64Bit = FALSE
bIs64Bit = BDDUtility.Is64Bit
wscript.echo "UEFI: " & bIsUEFI
wscript.echo "Is Admin: " & bIsAdmin
wscript.echo "Is HyperVisor Running: " & bIsHyperVirsorRunning
wscript.echo "Supports NX: " & bSupportsNX
wscript.echo "Supports VT: " & bSupportsVT
wscript.echo "Supports 64 Bit: " & bSupports64Bit
wscript.echo "Is 64 Bit: " & bIs64Bit
Function ScriptDir
ScriptDir = Left(WScript.ScriptFullName,Len(WScript.ScriptFullName) – Len(WScript.ScriptName) -1)
End Function
Super helpful, even eight years later. Thanks!