• Beitrags-Kategorie:Allgemein / PowerShell
  • Lesedauer:4 min Lesezeit

Unter Windows lässt sich mit Drittanbieteranwendungen wie TrueCrypt oder der neuen Version Veracrypt verschlüsselte Container erstellen und mit einem Kennwort absichern. Jeder Besitzer des Kennwortes hat Zugriff auf die darin enthaltenen Daten. Vielen ist nicht bewusst, dass Windows das auch Out of the box mit Bordmitteln kann. (Sofern man eine Pro Version besitzt.) Auch wenn man die verwendeten Begriffe anderes interpretieren kann, am Ende kommt das gleiche raus.

Vorbereitungen

Was braucht man um Loslegen zu können? Über die GUI kann man gleich loslegen. Da ich mich auf diesem Blog sehr der Powershell widme, sind auch die folgenden Schritte ganz auf Powershell ausgerichtet. Daher benötigen wir zusätzlich noch das Hyper-V Modul.

Hyper-V Modul installieren
Powershell als Administrator starten und folgenden Befehl eingeben.

IF (!$(Get-Module -ListAvailable | where name -like 'Hyper-V')){
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-Management-PowerShell -All
}

Container

Nach der Installation des Moduls kann man auch gleich den „Container“ erstellen. Der Container ist in diesem Fall eine VHDX-Datei. In dieser Datei lässt sich der Inhalt einer kompletten Festplatte virtuell speichern. Das Dateiformat ist eine Erweiterung des VHD-Formats und wurde erstmals mit Windows 8 und Windows Server 2012 veröffentlicht. VHDX wird normal für virtuelle Hyper-V Maschinen verwendet, lässt sich aber auch anders einsetzen.

Um die VHDX zu erstellen verwendet man den New-VHD Befehl und gibt neben Zielpfad des Containers noch die Größe in MB oder GB an.

$VHDXPath = "C:\Temp\test.vhdx"
$VHDXSize = 100MB

# Create VHDX
New-VHD -Path $VHDXPath -SizeBytes $VHDXSize -Dynamic

Nachdem die virtuelle Festplatte (aka Container) erstellt wurde, muss sie wie jede andere Disk, initialisiert und formatiert werden. Wieder verwendet man für diesen Schritt am Besten Powershell. Im Script verwende ich absichtlich den Parameter „AssignDriveLetter:$false“ da sonst eine unschöne „Sie müssen die Disk formatieren“ Meldung erscheint. Den Laufwerksbuchstaben weise ich erst danach zu.

# Mount VHDX
Mount-VHD -Path $VHDXPath
# Get Infos
$VHD = Get-VHD -Path $VHDXPath 
# Initialize Disk & Create & Format Partition
get-disk -Number $($VHD.Number) | Initialize-Disk -PartitionStyle GPT -PassThru | New-Partition -AssignDriveLetter:$false -UseMaximumSize | Format-Volume -Confirm:$false -FileSystem NTFS -Force
# Set DriveLetter
$NextFreeDriveLetter = get-wmiobject win32_logicaldisk | select -expand DeviceID -Last 1 | % {[char]([int][char]$_[0]  + 1)} 
get-disk -Number $($VHD.Number) | Get-Partition | Set-Partition -NewDriveLetter $NextFreeDriveLetter

und schon hat man ein neues Laufwerk

Verschlüsseln

Das Laufwerk wird jetzt noch mit einem Kennwort über Bitlocker verschlüsselt. Auch dieser Schritt erfolgt wieder mit Powershell.

$BTLPWD = "Str3ngG3h3!m_croix.at"
# enable Bitlocker
$MountPoint = $(get-disk -Number $($VHD.Number) | Get-Partition).DriveLetter
IF ($MountPoint){
    $SecureString = ConvertTo-SecureString $BTLPWD -AsPlainText -Force
    Enable-BitLocker -MountPoint $MountPoint -EncryptionMethod Aes256 -UsedSpaceOnly -Password $SecureString -PasswordProtector
}

Verwenden

Auf das erstellte Laufwerk kann man jetzt beliebig Daten ablegen. Möchte man den Zugriff darauf deaktivieren lässt sich das Laufwerk über die GUI mit rechte Maustaste „Trennen“. Verbinden lässt sich das Laufwerk in dem man einen doppelklick auf die VHDX Datei ausführt. Danach wird man zur Eingabe des Kennworts aufgefordert. Nachdem das Laufwerk getrennt ist kann die VHDX-Datei auch auf einen USB-Stick verschoben werden.

das komplette Script

IF (!$(Get-Module -ListAvailable | where name -like 'Hyper-V')){
    Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-Management-PowerShell -All
}

$VHDXPath = "C:\Temp\test.vhdx"
$VHDXSize = 100MB
$BTLPWD = "Str3ngG3h3!m_croix.at"

# Create VHDX
New-VHD -Path $VHDXPath -SizeBytes $VHDXSize -Dynamic
# Mount VHDX
Mount-VHD -Path $VHDXPath
# Get Infos
$VHD = Get-VHD -Path $VHDXPath 
# Initialize Disk & Create & Format Partition
get-disk -Number $($VHD.Number) | Initialize-Disk -PartitionStyle GPT -PassThru | New-Partition -AssignDriveLetter:$false -UseMaximumSize | Format-Volume -Confirm:$false -FileSystem NTFS -Force
# Set DriveLetter
$NextFreeDriveLetter = get-wmiobject win32_logicaldisk | select -expand DeviceID -Last 1 | % {[char]([int][char]$_[0]  + 1)} 
get-disk -Number $($VHD.Number) | Get-Partition | Set-Partition -NewDriveLetter $NextFreeDriveLetter
# enable Bitlocker
$MountPoint = $(get-disk -Number $($VHD.Number) | Get-Partition).DriveLetter
IF ($MountPoint){
    $SecureString = ConvertTo-SecureString $BTLPWD -AsPlainText -Force
    Enable-BitLocker -MountPoint $MountPoint -EncryptionMethod Aes256 -UsedSpaceOnly -Password $SecureString -PasswordProtector
}

5 / 5. 42

Schreibe einen Kommentar

*

code