diff --git a/enable-bitlocker.bat b/enable-bitlocker.bat new file mode 100644 index 0000000..c59315b --- /dev/null +++ b/enable-bitlocker.bat @@ -0,0 +1,67 @@ +# 2>NUL & @CLS & PUSHD "%~dp0" & "%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -noLogo -noProfile -ExecutionPolicy bypass "[IO.File]::ReadAllText('%~f0')|iex" & POPD & EXIT /B + +# 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" + return + } + + # Add Windows Forms assembly + Add-Type -AssemblyName System.Windows.Forms + + # 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 + + 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 = @" +BitLocker Recovery Key for C: drive +Generated on: $(Get-Date) +Computer Name: $env:COMPUTERNAME + +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: $_" + } + } else { + Write-Warning "Operation cancelled by user" + } +} + +# Execute the script block +& $scriptBlock \ No newline at end of file