Related to my last post about how to change BitLocker recovery password from an elevated command prompt here is how you can achieve the same result with vbScript and WMI. This script is from Microsoft TechNet: BitLocker Drive Encryption Operations Guide: Recovering Encrypted Volumes with AD DS.
' Target drive letter strDriveLetter = "c:" ' Target computer name ' Use "." to connect to the local computer strComputerName = "." ' -------------------------------------------------------------------------------- ' Connect to the BitLocker WMI provider class ' -------------------------------------------------------------------------------- strConnectionStr = "winmgmts:" _ & "{impersonationLevel=impersonate,authenticationLevel=pktPrivacy}!\\" _ & strComputerName _ & "\root\cimv2\Security\MicrosoftVolumeEncryption" On Error Resume Next 'handle permission errors Set objWMIService = GetObject(strConnectionStr) If Err.Number <> 0 Then WScript.Echo "Failed to connect to the BitLocker interface (Error 0x" & Hex(Err.Number) & ")." Wscript.Echo "Ensure that you are running with administrative privileges." WScript.Quit -1 End If On Error GoTo 0 strQuery = "Select * from Win32_EncryptableVolume where DriveLetter='" & strDriveLetter & "'" Set colTargetVolumes = objWMIService.ExecQuery(strQuery) If colTargetVolumes.Count = 0 Then WScript.Echo "FAILURE: Unable to find BitLocker-capable drive " & strDriveLetter & " on computer " & strComputerName & "." WScript.Quit -1 End If ' there should only be one volume found For Each objFoundVolume in colTargetVolumes set objVolume = objFoundVolume Next ' objVolume is now our found BitLocker-capable disk volume ' -------------------------------------------------------------------------------- ' Perform BitLocker WMI provider functionality ' -------------------------------------------------------------------------------- ' Add a new recovery password, keeping the ID around so it doesn't get deleted later ' ---------------------------------------------------------------------------------- nRC = objVolume.ProtectKeyWithNumericalPassword("Recovery Password Refreshed By Script", , sNewKeyProtectorID) If nRC <> 0 Then WScript.Echo "FAILURE: ProtectKeyWithNumericalPassword failed with return code 0x" & Hex(nRC) WScript.Quit -1 End If ' Removes the other, "stale", recovery passwords ' ---------------------------------------------------------------------------------- nKeyProtectorTypeIn = 3 ' type associated with "Numerical Password" protector nRC = objVolume.GetKeyProtectors(nKeyProtectorTypeIn, aKeyProtectorIDs) If nRC <> 0 Then WScript.Echo "FAILURE: GetKeyProtectors failed with return code 0x" & Hex(nRC) WScript.Quit -1 End If ' Delete those key protectors other than the one we just added. For Each sKeyProtectorID In aKeyProtectorIDs If sKeyProtectorID <> sNewKeyProtectorID Then nRC = objVolume.DeleteKeyProtector(sKeyProtectorID) If nRC <> 0 Then WScript.Echo "FAILURE: DeleteKeyProtector on ID " & sKeyProtectorID & " failed with return code 0x" & Hex(nRC) WScript.Quit -1 Else ' no output 'WScript.Echo "SUCCESS: Key protector with ID " & sKeyProtectorID & " deleted" End If End If Next WScript.Echo "A new recovery password has been added. Old passwords have been removed." ' - some advanced output (hidden) 'WScript.Echo "" 'WScript.Echo "Type ""manage-bde -protectors -get " & strDriveLetter & " -type recoverypassword"" to view existing passwords."