私はpowershellバックアップスクリプトを作成しようとしています。
- 最初のステップは、(ドライブ-IDにより)特定のUSBドライブを自動検出することである
- ディスクの空き領域が
をチェックされている - - バックアップは、ハードドライブ
にコピーされ、その後、アンロック-BitLockerは(パスワードによる)
をドライブのロックを解除 - ロックビットロックがドライブを再びロックします。
- バックアップの成功に関するメールが送信されました。powershell bitlockerはドライブを正しくロック解除しません。
スクリプトが初めて実行されると、ドライブが正しくロック解除されません。私のチェックディスクスペース機能は正しいディスクスペースを見つけられないので、私はそれを知っています。スクリプトは停止しますが、ドライブはロック解除された状態で表示されます。 スクリプトを2回目に実行すると(ドライブは最初に実行されたときにロックが解除されます)、ディスクスペースが見つかるため、スクリプトは実行されたまま実行されます。
ここにコードのサンプルがありますが、ドライブのロックを解除し、コピーしてロックするためにスクリプトを2回実行する必要がある理由を知る手助けをしてください。
function getUSBDrive($validDriveIDs)
$connectedDrives = Get-WmiObject Win32_Volume
foreach ($drive in $connectedDrives)
foreach ($id in $validDriveIDs)
if ($drive.DeviceID -eq $id)
return $drive
はそう$ドライブに私は、有効なUSBドライブ
次の機能が
function unlockDrive ($backupDrive, $password)
$SecureString = ConvertTo-SecureString $password -AsPlainText -Force
$DriveLetter = $backupDrive.DriveLetter
Unlock-BitLocker -MountPoint $DriveLetter -Password $SecureString
write-Host "unlocked"
私のドライブのロックを解除する必要があり、次の機能が「ない十分なスペース」は初めて、しかし、「十分なスペース」第二回言いました
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がスクリプト内で正しくロック解除されないようです。 Explorerは最初の実行後にドライブがロック解除されていると言います。ロック解除機能の有無にかかわらずスクリプトを2回呼び出すと、同じ結果が得られます。そのため、最初の実行では何とかドライブのロックが解除されているはずです。 私の英語は最高ではないので、十分に問題を十分に説明できることを願っています。
ご協力いただきありがとうございます。
ロックを解除した後にもう一度getUSBDriveを呼び出しますか?オブジェクトの中にメタデータがキャッシュされている可能性があります。また、更新されたデータを取得するためにOSから再度クエリする必要がありますか? –
あなたは私の日を救った。今動作しています... $ backupDriveはドライブのロックを解除する前後で同じ$ backupDriveではありません。くそー。どうもありがとう! – bootsector
@ArturBiesiadowski私は答えとして投稿することを提案したい – TheIncorrigible1