小小拷打了下GPT
主要功能是根据用户输入的计算机名或中文描述,查找对应计算机的 BitLocker 恢复密钥。包含以下主要逻辑:
输入检测:
1.如果输入为中文用户名,则将会其作为CN在域中查找对应的samAccountName,再将查找到的samAccountName作为计算机名进行查找
2.如果检测用户输入的非中文,则直接将其作为计算机名进行查找
混合查找
# 定义处理计算机的函数
function ProcessComputer {
param (
[string]$ADComputer
)
# 获取计算机的 DistinguishedName
try {
$DN = (Get-ADComputer -Identity $ADComputer).DistinguishedName
} catch {
Write-Warning "未找到计算机 '$ADComputer' 的信息: $_"
return
}
# 获取与计算机相关的 msFVE-RecoveryInformation 对象
$ADobj = Get-ADObject -Filter {objectclass -eq 'msFVE-RecoveryInformation'} -SearchBase $DN -Properties 'msFVE-RecoveryPassword'
# 检查是否找到了相关的恢复信息
if ($ADobj) {
# 获取恢复密码
$RecoveryPassword = $ADobj.'msFVE-RecoveryPassword'
# 输出恢复密码,设置为浅绿色
Write-Host "╔══════════════════════════════════════════════════════╗"
Write-Host " 恢复密码为: $RecoveryPassword" -ForegroundColor Green
Write-Host "╚══════════════════════════════════════════════════════╝"
# 复制到剪贴板
$RecoveryPassword | Set-Clipboard
Write-Host "恢复密码已复制到剪贴板" -ForegroundColor Green
Pause
} else {
Write-Warning "未找到与计算机 '$ADComputer' 相关的 BitLocker 恢复信息。"
Pause
}
}
# 提示用户输入计算机名或用户CN
$InputValue = Read-Host "请输入计算机名或姓名"
# 检测输入是否包含中文字符
if ($InputValue -match "[\u4e00-\u9fa5]") {
# 输入为中文,视为用户CN
try {
# 获取所有匹配CN的用户
$Users = Get-ADUser -Filter {cn -eq $InputValue} -Properties samAccountName
if ($Users) {
# 检查是否有多个匹配结果
if ($Users.Count -gt 1) {
Write-Host "检测到多个与姓名 '$InputValue' 匹配的用户,请在输出完毕之后按下回车继续显示:" -ForegroundColor Yellow
# 遍历每个匹配用户
$Users | ForEach-Object {
$ADComputer = $_.samAccountName
Write-Host "找到用户: 工号='$ADComputer'" -ForegroundColor Cyan
# 执行后续操作
ProcessComputer $ADComputer
}
} else {
# 只有一个匹配结果
$ADComputer = $Users.samAccountName
Write-Host "检测到输入为姓名,当前工号为:$ADComputer" -ForegroundColor Cyan
# 执行后续操作
ProcessComputer $ADComputer
}
} else {
Write-Warning "未找到对应的用户信息。请检查输入的 CN 是否正确。"
exit
}
} catch {
Write-Warning "获取用户信息时发生错误: $_"
exit
}
} else {
# 输入为计算机名
$ADComputer = $InputValue
ProcessComputer $ADComputer
}
这段是单独通过计算机名查找
# 提示用户输入计算机名
$ADComputer = Read-Host "请输入计算机名"
# 获取计算机的 DistinguishedName
$DN = (Get-ADComputer -Identity $ADComputer).DistinguishedName
# 获取与计算机相关的 msFVE-RecoveryInformation 对象
$ADobj = Get-ADObject -Filter {objectclass -eq 'msFVE-RecoveryInformation'} -SearchBase $DN -Properties 'msFVE-RecoveryPassword'
# 检查是否找到了相关的恢复信息
if ($ADobj) {
# 获取恢复密码
$RecoveryPassword = $ADobj.'msFVE-RecoveryPassword'
# 输出恢复密码,设置为浅绿色
Write-Host "═════════════════════════════════════════════════"
Write-Host "恢复密码为: $RecoveryPassword" -ForegroundColor Green
# 复制到剪贴板
$RecoveryPassword | Set-Clipboard
Write-Host "═════════════════════════════════════════════════"
Write-Host "恢复密码已复制到剪贴板" -ForegroundColor Green
} else {
Write-Warning "未找到与计算机 '$ADComputer' 相关的 BitLocker 恢复信息。"
}
3672

被折叠的 条评论
为什么被折叠?



