带有PowerShell的Active Directory的导出Bitlocker恢复键

有IT中断,我们需要将所有系统进入安全模式并调整一些值。但是,它要求提供BitLocker密码。不幸的是,我们没有它,因此我们需要Bitlocker恢复密钥才能进入系统。在本文中,您将学习如何将Bitlocker恢复键从使用PowerShell到CSV文件的Active Directory。

Windows上的Bitlocker恢复

启动系统时,它要求BitLocker密码解锁驱动器。我们没有这些信息。所以,让我们单击Esc键用于Bitlocker恢复。

它要求Bitlocker恢复密钥。

要获取BitLocker恢复密钥,您可以在Active Directory中搜索计算机,打开计算机属性并撤消信息。

您也可以在Active Directory中搜索Bitlocker恢复密钥ID提起Bitlocker恢复密码。

填写密码ID并拔出BitLocker恢复密码。

如果您需要所有BITLOCKER恢复密钥的报告来加快流程呢?让我们在下一步中看一下。

Export-bitlockerkeys.ps1 PowerShell脚本将将所有计算机Bitlocker恢复键从Active Directory导出到CSV文件,并为您提供以下信息的报告:

  1. ComputerName
  2. recoverypassword
  3. recoveryId
  4. 日期
  5. 时间
  6. 杰出名称
  7. 操作系统

下载export-bitlockerkeys.ps1 powershell脚本并将其放入C:脚本文件夹。

确保文件未阻止以防止运行脚本时的错误。在运行PowerShell脚本时,请在文章中阅读更多信息。

另一个选择是将下面的代码复制并粘贴到记事本中。给它名称export-bitlockerkeys.ps1,然后将其放在C:脚本文件夹。

<#
    .SYNOPSIS
    Export-BitLockerKeys.ps1

    .DESCRIPTION
    Export BitLocker Recovery Keys from Active Directory for all computers or computers in a specific OU to CSV file.

    .LINK
    www.alitajran.com/export-bitlocker-recovery-keys-active-directory-powershell/

    .NOTES
    Written by: ALI TAJRAN
    Website:    alitajran.com
    X:          x.com/alitajran
    LinkedIn:   linkedin.com/in/alitajran

    .CHANGELOG
    V1.00, 09/25/2024 - Initial version
#>

param(
    # Full path for the CSV report (must be provided)
    [Parameter(Mandatory = $true)]
    [string]$OutputPath,

    # Organizational Unit to search for computers (it will search for all computers if not provided)
    [string]$OU = ""
)

# Get the current user's identity
$currentIdentity = [Security.Principal.WindowsIdentity]::GetCurrent()
# Create a principal object from the identity to check roles
$principal = [Security.Principal.WindowsPrincipal]::new($currentIdentity)

# Check if the current user is an administrator
if (-not $principal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) {
    Write-Host "Only Administrators can read BitLocker Recovery Keys." -ForegroundColor Red
    exit
}

# Determine the search base for computers
if ($OU -ne "") {
    $Computers = Get-ADComputer -Filter 'ObjectClass -eq "computer"' -Property Name, DistinguishedName, OperatingSystem -SearchBase $OU | Sort-Object Name
}
else {
    $Computers = Get-ADComputer -Filter 'ObjectClass -eq "computer"' -Property Name, DistinguishedName, OperatingSystem | Sort-Object Name
}

# Initialize report list
$report = [System.Collections.Generic.List[Object]]::new()

foreach ($computer in $Computers) {
    $params = @{
        Filter     = "objectclass -eq 'msFVE-RecoveryInformation'"
        SearchBase = $computer.DistinguishedName
        Properties = 'msFVE-RecoveryPassword', 'whencreated'
    }

    $bitlockerInfo = Get-ADObject @params | Sort-Object -Property WhenCreated -Descending | Select-Object -First 1

    if ($bitlockerInfo) {
        $ReportLine = [PSCustomObject][ordered]@{
            ComputerName      = $computer.Name
            RecoveryPassword  = $bitlockerInfo.'msFVE-RecoveryPassword'
            RecoveryID        = $bitlockerInfo.Name.Substring(26, 36)
            Date              = $bitlockerInfo.Name.Substring(0, 10)
            Time              = $bitlockerInfo.Name.Substring(11, 8)
            DistinguishedName = $Computer.DistinguishedName
            OperatingSystem   = $Computer.OperatingSystem
        }
        $report.Add($ReportLine)
    }
    else {
        $ReportLine = [PSCustomObject][ordered]@{
            ComputerName      = $computer.Name
            RecoveryPassword  = "No BitLocker information found"
            RecoveryID        = "N/A"
            Date              = "N/A"
            Time              = "N/A"
            DistinguishedName = $Computer.DistinguishedName
            OperatingSystem   = $Computer.OperatingSystem
        }
        $report.Add($ReportLine)
    }
}

# Export the list to CSV
try {
    $report | Export-Csv -Path $OutputPath -NoTypeInformation -Encoding utf8
    Write-Host "Report successfully exported to: $OutputPath" -ForegroundColor Green
}
catch {
    Write-Host "Error exporting report to CSV: $_" -ForegroundColor Red -ErrorAction SilentlyContinue
}

这就是外观。

运行导出bitlockerkeys powershell脚本

从Active Directory中的所有计算机中导出BitLocker恢复键。

C:scripts.Export-BitlockerKeys.ps1 -OutputPath "C:tempAllComputers.csv"

从Active Directory中特定OU(组织单元)内的所有计算机中导出Bitlocker恢复键。

C:scripts.Export-BitlockerKeys.ps1 -OutputPath "C:tempComputersOU.csv" -OU "OU=WIN10,OU=Computers,OU=Company,DC=exoip,DC=local"

在路径中打开CSV文件C:温度使用您喜欢的应用程序。例如,使用Microsoft Excel。

就是这样!

结论

您了解了如何将Bitlocker恢复键从PowerShell到CSV文件的Active Directory。推荐方法是通过Active Directory并检索BitLocker恢复键。这样,一切都停留在广告中,并且没有出口。但是,如果您需要获取所有Bitlocker恢复密码的列表,并确保成功签署后重置恢复密码,这是最好的方法。

您喜欢这篇文章吗?您可能还喜欢如何创建Active Directory Security评估报告。不要忘记关注我们并分享这篇文章。

阅读更多: