当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 使用 PowerShell 从 Active Directory 导出 BitLocker 恢复密钥

作者:精品下载站 日期:2024-12-14 03:38:42 浏览:16 分类:玩电脑

使用 PowerShell 从 Active Directory 导出 BitLocker 恢复密钥


IT 出现故障,我们需要将所有系统置于安全模式并调整一些值。但是,它要求输入 BitLocker 密码。不幸的是,我们没有它,因此我们需要 BitLocker 恢复密钥才能进入系统。在本文中,您将了解如何使用 PowerShell 将 BitLocker 恢复密钥从 Active Directory 导出到 CSV 文件。

Windows 上的 BitLocker 恢复

启动系统时,它会要求输入 BitLocker 密码来解锁驱动器。我们没有这些信息。因此,让我们单击 Esc 进行 BitLocker 恢复。

[玩转系统] 使用 PowerShell 从 Active Directory 导出 BitLocker 恢复密钥

它要求提供 BitLocker 恢复密钥。

[玩转系统] 使用 PowerShell 从 Active Directory 导出 BitLocker 恢复密钥

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

[玩转系统] 使用 PowerShell 从 Active Directory 导出 BitLocker 恢复密钥

您还可以在 Active Directory 中搜索Bitlocker 恢复密钥 ID 以获取 BitLocker 恢复密码。

[玩转系统] 使用 PowerShell 从 Active Directory 导出 BitLocker 恢复密钥

填写密码 ID 并提取 BitLocker 恢复密码。

[玩转系统] 使用 PowerShell 从 Active Directory 导出 BitLocker 恢复密钥

如果您需要所有 BitLocker 恢复密钥的报告以加快该过程该怎么办?让我们在下一步中看看。

导出 BitLocker 恢复密钥 PowerShell 脚本

Export-BitLockerKeys.ps1 PowerShell 脚本会将所有计算机 BitLocker 恢复密钥从 Active Directory 导出到 CSV 文件,并为您提供包含以下信息的报告:

  1. 计算机名
  2. 恢复密码
  3. 恢复ID
  4. 日期
  5. 时间
  6. 专有名称
  7. 操作系统

下载 Export-BitLockerKeys.ps1 PowerShell 脚本并将其放置在 C:\scripts 文件夹中。

确保文件未被阻止,以防止运行脚本时出现错误。请阅读文章运行 PowerShell 脚本时出现未数字签名错误来了解更多信息。

另一种选择是将以下代码复制并粘贴到记事本中。将其命名为 Export-BitLockerKeys.ps1 并将其放置在 C:\scripts 文件夹中。

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[PSCustomObject]]::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
}

这就是它的样子。

[玩转系统] 使用 PowerShell 从 Active Directory 导出 BitLocker 恢复密钥

运行 Export-BitLockerKeys PowerShell 脚本

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

C:\scripts\.\Export-Bitlocker.ps1 -OutputPath "C:\temp\AllComputers.csv"

从 Active Directory 中特定 OU(组织单位)内的所有计算机导出 BitLocker 恢复密钥。

C:\scripts\.\Export-Bitlocker.ps1 -OutputPath "C:\temp\ComputersOU.csv" -OU "OU=WIN10,OU=Computers,OU=Company,DC=exoip,DC=local"

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

[玩转系统] 使用 PowerShell 从 Active Directory 导出 BitLocker 恢复密钥

就是这样!

了解更多:如何在 Outlook 中自动配置邮箱 »

结论

您了解了如何使用 PowerShell 将 BitLocker 恢复密钥从 Active Directory 导出到 CSV 文件。建议的方法是浏览 Active Directory 并检索 BitLocker 恢复密钥。这样,所有内容都保留在 AD 中,并且不会进行导出。但是,如果您需要获取包含所有 BitLocker 恢复密码的列表,并且确保在成功登录后重置恢复密码,那么这是最好的方法。

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

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯