none
ADMT迁移计算机账户到新的信任域之后,bitlocker恢复密钥丢失? RRS feed

  • 问题

  • 问题背景:因公司更名,需要更改域名,搭建信任域,将用户账户和计算机账户迁移至新域。

    旧域中的策略是将bitlocker恢复密钥保存至AD DS,可以在AD的计算机对象上查询Bitlocker恢复密钥。

    但是将旧域的计算机账户迁移至新域后,无法查询原有的Bitlokcer恢复密钥。应该是旧域中的bitlocker恢复密钥信息没有一起迁移过来。

    (测试使用新的计算机新加入到新域并使用Bitlocker加密后,可以在新域AD上查询Bitlocker恢复密钥。)

    寻求迁移bitlocker recovery password的解决方案。非常感谢!

    2017年7月19日 9:18

全部回复

  • 你好,

    为了使Bitlocker恢复密码备份到新的Active Directory域,我们需要使用manage-bde.exe命令行。

    首先我们需要获取Key Protector ID。在提升的命令提示符类型中:manage-bde -protectors -get C

     

    当我们拥有protector ID时,我们可以使用以下命令将Bitlocker恢复信息备份到Active Directorymanage-bde -protectors -adbackup C-id {上面步骤的Protector ID }

     

    您现在可以使用Bitlocker Recovery Password Viewer for Active Directory工具,并验证Bitlocker恢复密码是否已成功备份到新的Active Directory域。

    如果你拥有大量机器,你可以在启用Bitlocker的机器上执行一个脚本,在它们被加入或迁移到新的域之后。您可以使用在Technet论坛上找到的脚本:

    https://social.technet.microsoft.com/Forums/windows/en-US/73c11263-da07-4141-be83-dcda4af0ca32/put-bitlocker-recovery-key-to-active-directory-manually?forum=w7itprosecurity

    脚本将自动获取机器的ProtectorID,然后将Bitlocker恢复信息备份到Active Directory 

    请注意,在将其实施到您的生产环境之前,请先在测试机上进行测试。

    Best Regards,

    Frank


    Please remember to mark the replies as answers if they help and unmark them if they provide no help.
    If you have feedback for TechNet Subscriber Support, contact tnmff@microsoft.com.

    2017年7月20日 5:19
    版主
  • 你好,

    只是来看看回复的信息对你是否有用

    Best Regards,

    Frank

    Please remember to mark the replies as answers if they help and unmark them if they provide no help.
    If you have feedback for TechNet Subscriber Support, contact tnmff@microsoft.com.

    2017年7月24日 9:18
    版主
  • 谢谢您的回答,这些操作都是在客户端上做的,因为我们有些用户是长期不连接内网的,手动或者组策略都没法实现,请问有没有方法不接触用户计算机的情况下,把旧AD上的bitlocker恢复密钥直接同步或者复制到新AD上呢?
    2017年7月25日 3:15
  • Hi Huang,

    请尝试下以下脚本:

    https://gallery.technet.microsoft.com/scriptcenter/Migrate-BitlockerRecoveryIn-da9a6f17

    如果不行目前还真找不到别的办法了!

    Best  regards,

    Andy

    2017年7月26日 7:10
    版主
  • 你好,

    请问Andy提供的脚本对你是否有效。

    Best Regards,

    Frank


    Please remember to mark the replies as answers if they help and unmark them if they provide no help.
    If you have feedback for TechNet Subscriber Support, contact tnmff@microsoft.com.

    2017年7月28日 9:42
    版主
  • 你好,

    只是来确认下脚本是否对你有用。

    Best Regards,

    Frank


    Please remember to mark the replies as answers if they help and unmark them if they provide no help.
    If you have feedback for TechNet Subscriber Support, contact tnmff@microsoft.com.

    2017年8月2日 6:08
    版主
  • Hi Andy,

    非常抱歉,前段时间太忙,这几天才有空研究,不过这个脚本是基于quest migration manager的命令行工具,我们并没有该软件,所以没法测试,现在还在搜索其他的方法,非常感谢你。

    2017年8月15日 7:40
  • Hi Andy,

    非常抱歉,前段时间太忙,这几天才有空研究,不过这个脚本是基于quest migration manager的命令行工具,我们并没有该软件,所以没法测试,现在还在搜索其他的方法,非常感谢你。

    感谢你的积极反馈, 我们也会继续跟进如果有更好的方法我们会在这里和您分享.

    祝您生活愉快!

    Andy

    2017年8月15日 10:17
    版主
  • 问题解决了,在Holgernes和DJH的基础上再修改了些,附上脚本

     
    # Provide DC and account info for the old and new domain;
    $SourceDC = "dc.source.net"
    $TargetDC = "dc.target.net"
    $TargetDCName="target\administrator"
    $TargetDCPassword="********"
    # File where report should be generated;
    $CsvFilePath = "C:\temp\report.csv"

    # Create static variables for the attribute names (to handle hyphens)
    $msFVEKeyPackage = "msFVE-KeyPackage"
    $msFVERecoveryGUID = "msfve-recoveryguid"
    $msFVERecoveryPsw = "msfve-recoverypassword"
    $msFVEVolumeGUID = "msfve-volumeguid"
     
    # Get domain DN information
    $SourceRootDN = (Get-ADDomain -Server $SourceDC).DistinguishedName
    $TargetRootDN = (Get-ADDomain -Server $TargetDC).DistinguishedName
     
    # Get Bitlocker objects from the source domain
    #$SourceBitlocker = Get-ADObject -Filter { objectCategory -eq 'msFVE-RecoveryInformation' } -Server $SourceDC   -Properties $msFVEKeyPackage,$msFVERecoveryGUID,$msFVERecoveryPsw,$msFVEVolumeGUID,instanceType,objectCategory,objectClass,name
    # $SourceBitlocker.count
    # Create an array holder to export
    $export = @()

     $strFilter = "(&(objectcategory=msFVE-RecoveryInformation))"

        # Connect to LDAP using provided credntials
        $objDomain = New-Object System.DirectoryServices.DirectoryEntry("LDAP://dc=source,dc=net","source\administrator","*******")#,"source\administrator","*******"

        $objSearcher = New-Object System.DirectoryServices.DirectorySearcher
        $objSearcher.SearchRoot = $objDomain
        $objSearcher.PageSize = 1000  
        $objSearcher.Filter = $strFilter
        $objSearcher.SearchScope = "Subtree"
       
        $colResults = $objSearcher.FindAll()
        foreach ($objResult in $colResults)
        {
            $BitlockerObject = $objResult.Properties;
            $BitlockerObject.distinguishedname
        #}
    # For each object found, write them to the destination domain
    #ForEach ($BitlockerObject in $SourceBitlocker) {
        # Placeholder object for output file
        $info = New-Object -TypeName psobject
     
        # Identify the parent computer account of the bitlocker object; use that to identify the destination computer account
        $SourceComputer = $BitlockerObject.distinguishedname.Substring($BitlockerObject.distinguishedname.IndexOf(",")+1)
        "SourceComputer:"+$SourceComputer
        $ComputerName = $SourceComputer.Split(",")[1].Substring(3)
        "ComputerName:"+$ComputerName
        $TargetComputer = (Get-ADComputer -Filter {Name -eq $ComputerName} -Properties * -Server $TargetDC).distinguishedname
        "Name:"+$TargetComputer
        # Create placeholder for computer info to be exported
        $info | Add-Member -MemberType NoteProperty -Name Child_Object -Value $BitlockerObject.Name
        $info | Add-Member -MemberType NoteProperty -Name Computer_Name -Value $ComputerName


        # If we have somewhere to save information to
        $bitpassword=$BitlockerObject.'msfve-recoverypassword'
        If ($TargetComputer) {
            # Prepare attributes for writing
            $BitlockerAttributes = @{
                                        #$msFVEKeyPackage=$BitlockerObject.$msFVEKeyPackage

                                        'msFVE-RecoveryGuid'="msfve-recoveryguid"[0]#$BitlockerObject.'msfve-recoveryguid'
                                        'msfve-recoverypassword'=""+$bitpassword+""
                                        'msfve-volumeguid'=$BitlockerObject.'msfve-volumeguid'[0]
                                        #instanceType=$BitlockerObject.instanceType
                                        #objectCategory=($BitlockerObject.objectCategory -ireplace $SourceRootDN, $TargetRootDN)
                                        #objectClass=$BitlockerObject.objectClass
                                      }

     "1"+$BitlockerAttributes.'msfve-recoverypassword'
     "2:"+$BitlockerAttributes.'msfve-recoveryguid'
     "3:"+$BitlockerAttributes.'msfve-volumeguid'[0]

     "4"+$BitlockerObject.name
     "5"+$TargetComputer
     
            # Attempt to write the Bitlocker information to the target computer object
            New-ADObject -Name $BitlockerObject.name -Type "msFVE-RecoveryInformation" -Path $TargetComputer -OtherAttributes $BitlockerAttributes -ErrorVariable var_error
     
            # Error reporting
            If ($var_error) {
                $info | Add-Member -MemberType NoteProperty -Name Migrated -Value 'See error'
                $info | Add-Member -MemberType NoteProperty -Name Error -Value "$var_error"
            }
            Else {
                $info | Add-Member -MemberType NoteProperty -Name Migrated -Value 'YES'
            }
        }
        Else {
            $info | Add-Member -MemberType NoteProperty -Name Migrated -Value "No"
            $info | Add-Member -MemberType NoteProperty -Name Error -Value "Computer object not found in new domain"
        }
     
        # Update the output
        $export += $info
     
        # Cleanup
        $TargetComputer = $null
        $SourceComputer = $null
        $ComputerName = $null
        $info = $null
    }
     
    # Output the report
    $export | Export-Csv -Path $CsvFilePath -NoTypeInformation

    2017年9月1日 3:25
  • 你好,

    感谢你的分享和支持。


    Best Regards,

    Frank


    Please remember to mark the replies as answers if they help and unmark them if they provide no help.
    If you have feedback for TechNet Subscriber Support, contact tnmff@microsoft.com.

    2017年9月1日 9:40
    版主