From 85e76f2122e16dd5901a231e5e70d96a20ccea20 Mon Sep 17 00:00:00 2001 From: rogier Date: Tue, 21 Jan 2025 00:33:43 +0100 Subject: [PATCH] Update enable-bitlocker.ps1 --- enable-bitlocker.ps1 | 95 ++++++++++++++++++++++++-------------------- 1 file changed, 51 insertions(+), 44 deletions(-) diff --git a/enable-bitlocker.ps1 b/enable-bitlocker.ps1 index d4c6faa..ea18937 100644 --- a/enable-bitlocker.ps1 +++ b/enable-bitlocker.ps1 @@ -1,38 +1,43 @@ -# Check if script is running with admin privileges -if (-not ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) { - Write-Error "Please run this script as Administrator" - exit 1 -} +# Script block that contains all the functionality +$scriptBlock = { + # Check if script is running with admin privileges + if (-not ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) { + Write-Error "Please run this script as Administrator" + return + } -# Check if BitLocker is already enabled on C: -$bitlockerStatus = Get-BitLockerVolume -MountPoint "C:" -if ($bitlockerStatus.ProtectionStatus -eq "On") { - Write-Warning "BitLocker is already enabled on C: drive" - exit 0 -} + # Check if BitLocker is already enabled on C: + $bitlockerStatus = Get-BitLockerVolume -MountPoint "C:" + if ($bitlockerStatus.ProtectionStatus -eq "On") { + Write-Warning "BitLocker is already enabled on C: drive" + return + } -# Prompt user to select save location for recovery key -$saveDialog = New-Object System.Windows.Forms.SaveFileDialog -$saveDialog.Filter = "Text Files (*.txt)|*.txt" -$saveDialog.Title = "Select location to save BitLocker recovery key" -$saveDialog.FileName = "BitLocker-$(Get-Date -Format 'yyyy-MM-dd').txt" + # Add Windows Forms assembly + Add-Type -AssemblyName System.Windows.Forms -if ($saveDialog.ShowDialog() -eq 'OK') { - $keyPath = $saveDialog.FileName - - try { - Write-Host "Enabling BitLocker on C: drive..." -ForegroundColor Yellow + # Prompt user to select save location for recovery key + $saveDialog = [System.Windows.Forms.SaveFileDialog]::new() + $saveDialog.Filter = "Text Files (*.txt)|*.txt" + $saveDialog.Title = "Select location to save BitLocker recovery key" + $saveDialog.FileName = "BitLocker-RecoveryKey-$env:COMPUTERNAME-$(Get-Date -Format 'yyyy-MM-dd').txt" + + if ($saveDialog.ShowDialog() -eq 'OK') { + $keyPath = $saveDialog.FileName - # Enable BitLocker with TPM - Enable-BitLocker -MountPoint "C:" -TpmProtector -SkipHardwareTest -ErrorAction Stop - - # Get recovery key and save to file - $recoveryKey = (Get-BitLockerVolume -MountPoint "C:").KeyProtector | - Where-Object { $_.KeyProtectorType -eq 'RecoveryPassword' } | - Select-Object -ExpandProperty RecoveryPassword + try { + Write-Host "Enabling BitLocker on C: drive..." -ForegroundColor Yellow + + # Enable BitLocker with TPM + Enable-BitLocker -MountPoint "C:" -TpmProtector -SkipHardwareTest -ErrorAction Stop + + # Get recovery key and save to file + $recoveryKey = (Get-BitLockerVolume -MountPoint "C:").KeyProtector | + Where-Object { $_.KeyProtectorType -eq 'RecoveryPassword' } | + Select-Object -ExpandProperty RecoveryPassword - # Save key to file - $content = @" + # Save key to file + $content = @" BitLocker Recovery Key for C: drive Generated on: $(Get-Date) Computer Name: $env:COMPUTERNAME @@ -41,18 +46,20 @@ Recovery Key: $recoveryKey Please keep this file in a safe place. You will need this key to recover your data if BitLocker enters recovery mode. "@ - - $content | Out-File -FilePath $keyPath -Force - - Write-Host "`nBitLocker has been successfully enabled on C: drive" -ForegroundColor Green - Write-Host "Recovery key has been saved to: $keyPath" -ForegroundColor Green - Write-Host "IMPORTANT: Please store this file in a safe location!" -ForegroundColor Yellow - - } catch { - Write-Error "Failed to enable BitLocker: $_" - exit 1 + + $content | Out-File -FilePath $keyPath -Force + + Write-Host "`nBitLocker has been successfully enabled on C: drive" -ForegroundColor Green + Write-Host "Recovery key has been saved to: $keyPath" -ForegroundColor Green + Write-Host "IMPORTANT: Please store this file in a safe location!" -ForegroundColor Yellow + + } catch { + Write-Error "Failed to enable BitLocker: $_" + } + } else { + Write-Warning "Operation cancelled by user" } -} else { - Write-Warning "Operation cancelled by user" - exit 0 -} \ No newline at end of file +} + +# Execute the script block +& $scriptBlock \ No newline at end of file