Search code examples
windowspowershellspecial-characterssecurestringbitlocker

Powershell - Can't unlock BitLocker as 256 characters long password contains special characters with single double quotes


Here's the background and I have no clue beyond this so tell me how to move ahead from this!

PS C:\> $SecureString = ConvertTo-SecureString "fjuksAS1337" -AsPlainText -Force

PS C:\> Unlock-BitLocker -MountPoint "E:" -Password $SecureString

My password here is:

cF;TA" X%jl"\G{d}rcVzNI=Inps#|P,o{~"k<+@?bm)PjQf^\c8EB! (cL.ZyA.v/yYQ#,!#gN'%"VwlNFs)(h\1Uf@cFdr7BU%zDA;&2R_3w3C3td-Nm,^VFE$cF>N{ol0Y~qR2i`Vm%Q@ckh0]#ZE!ijnirg5k?bj\L;88wBhg8QqO^/T64D@O6Q'H"")/I5(d4v7RC`jH=JH+,Zy*TY4MEf~.b7?;';zLEmB>F^S7aBrUfnN&(Vuhjw}Z3w5

As you see it has multiple single and double quotes which breaks the SecureString command output getting nowhere.

I need to use this password in order to unlock BitLocker drive as the UI throws wrong password error and recovery password of 48 digits is unfortunately lost!

Please help as I am having no idea here at all!


Solution

  • Use a single-quoted here-string. Anything you put in there won't be escaped in any way.

    Example

    $PlainTextPassword = @'
    cF;TA" X%jl"\G{d}rcVzNI=Inps#|P,o{~"k<+@?bm)PjQf^\c8EB! (cL.ZyA.v/yYQ#,!#gN'%"VwlNFs)(h\1Uf@cFdr7BU%zDA;&2R_3w3C3td-Nm,^VFE$cF>N{ol0Y~qR2i`Vm%Q@ckh0]#ZE!ijnirg5k?bj\L;88wBhg8QqO^/T64D@O6Q'H"")/I5(d4v7RC`jH=JH+,Zy*TY4MEf~.b7?;';zLEmB>F^S7aBrUfnN&(Vuhjw}Z3w5
    '@
    
    $SecureString = ConvertTo-SecureString $PlainTextPassword -AsPlainText -Force
    

    For a quick reference:

    
    # verbatim string. Nothing get processed. Single-quotes within the string need to 
    # be doubled down.
    $sq = 'Hello '' world.'
    
    # Expandable string. Stuff that can be expanded will be.
    # Double-quotes within the string need to be doubled down or preceded by a backtick `
    $dq = "Hello `" "" world"
    
    # verbatim here string. single-quotes within the string do not need to be escaped
    # This is the way to go for multiline strings
    $sqh = @'
    Hello ' World
    '@
    
    # Expandable here string. Double quotes within the string do not need to be escaped.
    # This is the way to go for multiline strings
    $dqh = @"
    Hello " World
    "@
    

    Reference

    About_Quoting_Rules