PowerShell自动化配置BitLocker加密及恢复密钥格式适配问题咨询
PowerShell自动化配置BitLocker加密及恢复密钥格式适配问题咨询
看起来你遇到的核心问题是:想用PowerShell自动给员工笔记本配置BitLocker(依赖TPM自动解锁),同时生成带标识符和分段密钥的文本格式恢复文件,而不是系统默认生成的BEK二进制文件,而且不能用AD或组策略对吧?我来帮你梳理下解决方案。
先分析你之前尝试的命令问题
你之前用Enable-BitLocker时加了-RecoveryKeyProtector参数,这个参数的作用就是生成BEK格式的密钥文件,这也是为什么你一直得到BEK而不是想要的文本格式。而你后来加的-RecoveryPassword -RecoveryPasswordProtector参数组合不对,正确的做法是只需要-RecoveryPasswordProtector来生成可手动输入的数字恢复密码,然后我们把这个密码和对应的标识符提取出来,再写入你需要的自定义格式文件。
完整解决方案脚本
下面是一套可以直接用的脚本,包含TPM校验、BitLocker启用、恢复信息提取、自定义格式密钥文件生成的全流程:
# 1. 校验TPM状态(必须确保TPM存在且启用,否则无法用TPM自动解锁) $tpmStatus = Get-Tpm if (-not $tpmStatus.TpmPresent -or -not $tpmStatus.TpmEnabled) { Write-Error "错误:未检测到可用的TPM芯片,或TPM未启用,请先检查设备TPM设置" exit 1 } # 2. 设置恢复密钥保存路径(替换为你的移动盘路径,比如"E:\BitLocker_Keys") $RecoveryFolder = "D:\BitLocker_Recovery_Keys" # 自动创建路径(如果不存在) if (-not (Test-Path -Path $RecoveryFolder)) { New-Item -Path $RecoveryFolder -ItemType Directory -Force | Out-Null } # 3. 启用BitLocker:用TPM自动解锁,同时添加恢复密码保护 $bitLockerConfig = Enable-BitLocker ` -MountPoint "C:" ` -EncryptionMethod Aes128 ` -UsedSpaceOnly ` -SkipHardwareTest ` -TpmProtector ` # 启用TPM自动解锁 -RecoveryPasswordProtector # 生成数字恢复密码(而非BEK) # 4. 提取恢复密码和标识符 $recoveryData = $bitLockerConfig.KeyProtectors | Where-Object { $_.KeyProtectorType -eq "RecoveryPassword" } $recoveryPassword = $recoveryData.RecoveryPassword $identifier = $recoveryData.KeyId.Guid.ToString() # 5. 生成你需要的自定义格式密钥文本 $keyFileContent = @" BitLocker Drive Encryption recovery key To verify that this is the correct recovery key, compare the start of the following identifier with the identifier value displayed on your PC. Identifier: $identifier If the above identifier matches the one displayed by your PC then use the following key to unlock your drive. Recovery Key: $($recoveryPassword -replace '(.{6})','$1-' -replace '-$','') If the above identifier doesn't match the one displayed by your PC then this isn't the right key to unlock your drive. Try another recovery key or refer to official BitLocker documentation for additional assistance. "@ # 6. 写入密钥文件(文件名用标识符命名,避免重复) $keyFilePath = Join-Path -Path $RecoveryFolder -ChildPath "BitLocker_RecoveryKey_$identifier.txt" Set-Content -Path $keyFilePath -Value $keyFileContent -Encoding UTF8 Write-Host "BitLocker配置完成!恢复密钥已保存至:$keyFilePath"
关键细节说明
- TPM校验:脚本开头先检查TPM状态,因为你要求用TPM自动解锁,必须确保设备TPM是启用状态,否则命令会失败。
- 恢复密码 vs 恢复密钥:
-RecoveryPasswordProtector生成的是数字密码(就是你要的那种分段密钥),而-RecoveryKeyProtector生成的是BEK二进制文件,这是两者的核心区别。 - 密钥格式化:用正则表达式
-replace '(.{6})','$1-'把连续的数字密码分成6位一组,最后去掉末尾多余的连字符,完美匹配你想要的格式。 - 权限要求:这个脚本必须以管理员权限运行,否则无法修改BitLocker设置。
注意事项
- 确保移动盘已经正确挂载,脚本里的
$RecoveryFolder要替换成你实际的移动盘路径(比如员工插入的U盘盘符)。 - 如果需要批量处理,可以把移动盘路径做成参数,方便动态传入。
备注:内容来源于stack exchange,提问作者Killing-me-MicroSoftly
相关产品推荐
相关产品推荐

