我即将编写一个powershell备份脚本。
- 第一步是自动检测特定的 USB 驱动器(通过驱动器 ID)
- 然后,unlock-bitlocker 解锁驱动器(通过密码)
- 检查可用磁盘空间
- 将备份复制到硬盘驱动器
- lock-bitlocker 再次锁定驱动器。
- 发送有关备份成功的电子邮件。
现在看来,第一次运行脚本不会正确解锁驱动器。我知道,因为我的检查磁盘空间功能找不到正确的磁盘空间。脚本停止,但驱动器显示为未锁定。现在第二次运行脚本(驱动器从第一次运行时解锁)将找到磁盘空间并且脚本继续运行。
这是代码示例,希望您能帮助我找出为什么我需要运行脚本2次来解锁、复制和锁定驱动器。
function getUSBDrive($validDriveIDs)
$connectedDrives = Get-WmiObject Win32_Volume
foreach ($drive in $connectedDrives)
foreach ($id in $validDriveIDs)
if ($drive.DeviceID -eq $id)
return $drive
所以在 $drive 我得到了我有效的 USB 驱动器
下一个功能应该解锁我的驱动器
function unlockDrive ($backupDrive, $password)
$SecureString = ConvertTo-SecureString $password -AsPlainText -Force
$DriveLetter = $backupDrive.DriveLetter
Unlock-BitLocker -MountPoint $DriveLetter -Password $SecureString
write-Host "unlocked"
next 函数第一次说“没有足够的空间”,但第二次说“足够的空间”
function checkFreeSpaceOnUSB($backupDrive)
$freeSpace = ($backupDrive.FreeSpace / 1GB)
if ($freeSpace -lt $minimumDiskSpace)
write-Host "less than $minimumDiskSpace GB free Space on USB Drive"
return 0
else
write-Host "Drive has enough space"
return 1
这就是我调用这些函数的方式:
$backupDrive = getUSBDrive $validDriveIDs
unlockDrive $backupDrive $passwordToUnlock
checkFreeSpaceOnUSB $backupDrive
因此,似乎 unlock-bitlocker 无法在脚本中正确解锁。资源管理器说驱动器在第一次运行后解锁。在有或没有解锁功能的情况下第二次调用脚本会产生相同的结果 - 它可以工作。所以第一次运行必须以某种方式解锁驱动器。由于我的英语不是最好的,我希望我能足够好地描述这个问题。
非常感谢您的帮助!