Skip to main content

Windows Bootstick - Installierbare Versionen einsehen

Einleitung

Immer wieder trifft man auf alte USB SticksUSB-Sticks, die einen Windows Installer enthalten, aber man weißweiß nichtnicht, um welche Version es sich handelt. Man könnte jetzt den PC von diesem Stick aus booten und installieren. Aber um diesen Vorgang zu erleichternerleichtern, gibt es ein SkriptSkript, welches die Installierbareninstallierbaren Versionen in einem Terminal Fenster ausgibt.

Anwendung

Wir ladenladen, fügen den Code in eine Batch Datei ein. Den Namen können wir frei wählen. Ich verwende den Namen ReadWim.bat. Im nächsten Schritt ööffnen wir das Windows AusfüAusführen Fenster [Windows Taste + R]. Dort geben wir folgendes ein: shell:sendto. (Ordner: C:\Users\<Kontoname>\AppData\Roaming\Microsoft\Windows\SendTo) Eses ööffnet sich ein Ordner. Dort erstellst du eine VerknüVerknüpfung. Unter Eigenschaften legst du einen Pfad festfest, in der die Batch Datei liegt. 

Wichtig: Unter den Eigenschaften der VerknüVerknüpfungen musst du unter VerknüVerknüpfung => Erweitert die Checkbox Als Administrator ausfüausführen aktivieren!

%comspec% /c C:\skripte\ReadWim.bat

Im nächsten Schritt müssen wir einen Registry Eintrag hinterlegen. Das machen wirwir, indem wir eine Datei erstellen mit dem Namen addReg.reg. Dort fügen wir folgenden Code ein

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Drive\shellex\ContextMenuHandlers\Sendto]
@="{7BA4C740-9E81-11CF-99D3-00AA004AE837}"

Diese Datei speicherst du ab, und machst dann einen Doppelklick drauf.darauf.

Code

@echo off
set workdir=%~dp0
whoami /groups | find "S-1-16-12288" > nul
if not errorlevel 1 (
%windir%\System32\more +16 "%~f0" > "%workdir%%~n0-temp.ps1"
powershell -NoProfile -ExecutionPolicy Bypass -File "%workdir%%~n0-temp.ps1" %*
del %workdir%%~n0-temp.ps1
exit /b
)
color 0C
echo.
echo Das Attribut -Als Administrator ausfuehren- wurde nicht gesetzt!
pause
goto :eof

$Details = $true
$Details = $false

function Ausgabe([string[]] $Pfade, [bool] $Details) {
ForEach ($Pfad in $Pfade) {
if (Test-Path -Path $Pfad) {
Write-Host `n$Pfad -ForegroundColor Yellow -BackgroundColor Black
}
else {
Write-Host "`n$Pfad nicht gefunden." -ForegroundColor Red -BackgroundColor Black
continue
}

$ISO = $Null
if (Test-Path -Path $Pfad -Include *.iso) {
$ISO = $Pfad
Mount-DiskImage $Pfad | Out-Null
$Pfad = (Get-DiskImage $Pfad | Get-Volume).DriveLetter + ":\"
}

if ($Details) {
if (Test-Path -Path $Pfad -Include *.swm,*.esd,*.wim) {
$Index = (Get-WindowsImage -ImagePath $Pfad).ImageIndex
ForEach ($Nummer in $Index) {
Dism.exe /Get-ImageInfo /Imagefile:$Pfad /index:$Nummer
}
}
else {
$Wims = Get-ChildItem -Path $Pfad -include *.wim,*.esd,*.swm -Recurse
ForEach ($Pfad in $Wims) {
$Index = (Get-WindowsImage -ImagePath $Pfad).ImageIndex
ForEach ($Nummer in $Index) {
Dism.exe /Get-ImageInfo /Imagefile:$Pfad /index:$Nummer
}
}
} }
}
else {
if (Test-Path -Path $Pfad -Include *.swm,*.esd,*.wim) {
Dism.exe /Get-ImageInfo /Imagefile:$Pfad
}
else {
foreach ($wim in (Get-ChildItem -path $Pfad -Include *.wim,*.esd,*.swm -Recurse)) {
Dism.exe /Get-ImageInfo /Imagefile:$wim
}
}
}

If ($ISO) {
Dismount-DiskImage $ISO | Out-Null
}
}
}

$Dateien = @()
ForEach ($arg in $Args) {
if ($arg -eq "-v" -or $arg -eq "/v" -or $arg -eq "--verbose") {
$Details = $true
}
else {
$Dateien += $arg
}
}

Ausgabe $Dateien $Details

Write-Host "`r`n`r`n(Enter zum Beenden)" -NoNewline
Read-Host

Quellenangabe: Skript & Anleitung stammt von https://heise.de. Diese Anleitung ist hier nur eine gekügekürzte Fassung.
Original-Artikel: https://www.heise.de/ratgeber/Anleitung-Mit-Skript-Windows-Setup-Medium-analysieren-6550233.html