Hyper-V Virtuelle Maschine per Script erstellen; mein Lösungsansatz
- Holgi
- Elite
- Beiträge: 2663
- Registriert: 12.05.2018, 12:33
- Hat sich bedankt: 324 Mal
- Danke erhalten: 410 Mal
- Gender:
Re: Hyper-V Virtuelle Maschine per Script erstellen; mein Lösungsansatz
jein, CMD ja, aber mit Powershell Befehlen.
z.B. so:
Code: Alles auswählen
@echo off
setlocal enabledelayedexpansion
COLOR 0a
chcp 1252 >nul
:: BatchGetAdmin
:-------------------------------------
REM --> Check for permissions
IF "%PROCESSOR_ARCHITECTURE%" EQU "amd64" (
>nul 2>&1 "%SYSTEMROOT%\SysWOW64\cacls.exe" "%SYSTEMROOT%\SysWOW64\config\system"
) ELSE (
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
)
REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
echo Requesting administrative privileges...
goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
set params= %*
echo UAC.ShellExecute "cmd.exe", "/c ""%~s0"" %params:"=""%", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
del "%temp%\getadmin.vbs"
exit /B
:gotAdmin
pushd "%CD%"
CD /D "%~dp0"
rem --------- Variablen fuer die VM setzen -----------
rem *** VM: Anzahl der virtuellen CPUs
set cpu=4
rem *** VM: Start-RAM-Groesse in MByte ***
set startram=4096
rem *** VM: Minmale RAM-Groesse in MByte ***
set minram=2048
rem *** VM: Maximale RAM-Groesse in MByte ***
set maxram=4096
rem *** VM: Netzwerkswitch auswaehlen. Zum Aktivieren "rem" vor der naechsten Zeile entfernen und bei Bedarf Switchname in Anfuehrungsstrichen (') anpassen
set switch=-switchname 'default switch'
rem *** VM: Automatische Pruefpunkte an (1) oder aus (0)
set autocheckpoints=0
rem *** VM: Generation 1 (Legacy BIOS) oder 2 (UEFI)? ***
set gen=2
rem *** Nur für Generation 2: TPM aktiv? (0: aus, 1: an) ***
set TPM=0
if %gen%==2 set TPM=1
rem *** VHD Größe in GB
set VHDSize=64GB
rem *** GEN1=vhd GEN2=vhdx
set format=vhd
if %gen%==2 set format=vhdx
rem *** Speicherpfad fuer VMs auslesen ***
echo.
set vmpfad=
for /f "tokens=3" %%a in ('reg query ^"HKLM^\SOFTWARE^\Microsoft^\Windows NT^\CurrentVersion^\Virtualization^" /v ^"DefaultExternalDataRoot^" 2^>nul') do set vmpfad=%%a
if "%vmpfad%."=="." set vmpfad=%public%\Documents\Hyper-V\Virtual hard disks\
cls
echo Gespeichert wird die VM unter:
echo %vmpfad%
echo.
rem --------- Ende Variablen fuer die VM setzen -----------
echo.
ECHO \\!//
ECHO (o o)
ECHO -------------------------------oOOo-(_)-oOOo-------------------------------
echo Im folgenden Schritt geben Sie der VM einen Namen.
echo Sollte eine VM mit gleichem Namen bereits existieren,
echo wird diese unwiederbringlich entfernt...
Echo ---------------------------------------------------------------------------
set /p VMName="geben Sie der VM einen Namen (z.B. Windows11Pro): "
echo.
cls
rem set /p ISO="Pfad zu den Windows Installationsdateien (z.B. C:\Windows11_TPM): "
set ISO=C:\%VMName%
echo.
echo *** Einige Pruefungen vorab ... ***
echo.
IF NOT EXIST C:\%VMName% (
echo Das Verzeichnis C:\%VMName% ist nicht vorhanden
goto Fehler
)
set operation=*** Skript braucht mindestens Windows 10 Version 1709 ***
for /f "tokens=3" %%a in ('reg query ^"HKLM^\SOFTWARE^\Microsoft^\Windows NT^\CurrentVersion^" /v ^"ReleaseID^"') do set versionhost=%%a
if %versionhost% lss 1709 goto fehler
set operation=*** Skript muss mit Administratorrechten laufen ***
whoami /groups | find "S-1-16-12288" > nul
if errorlevel 1 goto fehler
set operation=*** Hyper-V muss aktiviert sein ***
dism /online /get-features /format:table | find "Microsoft-Hyper-V " | find "Aktiviert" > nul
if errorlevel 1 goto fehler
set operation=*** Hyper-V-Modul fuer Windows PowerShell muss aktiviert sein ***
dism /online /get-features /format:table | find "Microsoft-Hyper-V-Management-PowerShell" | find "Aktiviert" > nul
if errorlevel 1 goto fehler
cls
echo *** Keine Probleme gefunden, jetzt geht es los ***
echo.
Echo ********************************************************************
Echo Erstelle virtuelle Maschine %VMName%
echo aus dem Verzeichnis %ISO%
Echo bitte warten Sie einen Augenblick ...
Echo ********************************************************************
echo Der Virenschutz wird de-aktiviert
echo bitte warten ...
powershell.exe -command "Set-MpPreference -DisableRealtimeMonitoring $true"
powershell.exe -command "Set-MpPreference -MAPSReporting Disabled"
powershell.exe -command "Set-MpPreference -SubmitSamplesConsent NeverSend"
powershell.exe -command "Set-MpPreference -DisableIntrusionPreventionSystem $true"
powershell.exe -command "Set-MpPreference -DisableIOAVProtection $true"
powershell.exe -command "Set-MpPreference -DisableScriptScanning $true"
powershell.exe -command "Set-MpPreference -EnableControlledFolderAccess Disabled"
powershell.exe -command "Set-MpPreference -EnableNetworkProtection Disabled"
powershell.exe -command "Set-MpPreference -ScanOnlyIfIdleEnabled $false"
powershell.exe -command "Set-MpPreference -DisableRemovableDriveScanning $true"
powershell.exe -command "Set-MpPreference -DisableEmailScanning $true"
powershell.exe -command "Set-MpPreference -PUAProtection Disabled"
powercfg /setactive 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c
PowerShell Stop-VM -Name "%VMName%" -Force >nul
PowerShell Remove-VM -Name "%VMName%" -Force >nul
PowerShell Remove-Item "$env:public\Documents\Hyper-V\Virtual hard disks\%VMName%.vhdx" -Force >nul
del "%public%\Documents\Hyper-V\Virtual hard disks\%VMName%.vhdx" /f /q 1>nul 2>nul
Echo "%VMName%" deleted !!
del "%systemdrive%\%VMName%.iso" /f /q >nul 2>nul
timeout /T 10 /NOBREAK >nul 2>nul
if exist "%ISO%\efi\microsoft\boot\cdboot-prompt.efi" goto burn
Ren "%ISO%\efi\microsoft\boot\cdboot.efi" "cdboot-prompt.efi"
Ren "%ISO%\efi\microsoft\boot\cdboot_noprompt.efi" "cdboot.efi"
Ren "%ISO%\efi\microsoft\boot\efisys.bin" "efisys_prompt.bin"
Ren "%ISO%\efi\microsoft\boot\efisys_noprompt.bin" "efisys.bin"
:burn
"%~dp0Oscdimg\X64\oscdimg.exe" -m -o -u2 -udfver102 -bootdata:2#p0,e,b"%~dp0Oscdimg\X64\etfsboot.com"#pEF,e,b"%~dp0Oscdimg\X64\efisys.bin" "%ISO%" "%systemdrive%\%VMName%.iso"
cls
echo Erstelle VM %VMName%
powershell new-vm -name '%vmname%' -NewVHDPath "%VMName%.vhdx" -NewVHDSizeBytes %VHDSize% -MemoryStartupBytes %startram%MB -generation %gen% %switch%
Echo Virtuelle Maschine anpassen...
powershell set-vm -name '%vmname%' -ProcessorCount %cpu% -DynamicMemory -MemoryMaximumBytes %maxram%MB -MemoryMinimumBytes %minram%MB -AutomaticCheckpointsEnabled %autocheckpoints% -CheckpointType Disabled
powershell Enable-VMIntegrationService -VMName '%vmname%' -Name 'Gastdienstschnittstelle'
if %gen%==2 (
if %TPM%==1 (
powershell Set-VMKeyProtector -VMName '%vmname%' -NewLocalKeyProtector
powershell Enable-VMTPM -vmname '%vmname%'
)
)
if %gen%==1 (
powershell Remove-VMNetworkAdapter -vmname '%vmname%'
powershell Add-VMNetworkAdapter -vmname '%vmname%' -IsLegacy $true
)
rem Add DVD Drive to Virtual Machine
powershell Add-VMDvdDrive -VMName '%vmname%' -Path $env:systemdrive\%VMName%.iso
rem Configure Virtual Machine to Boot from DVD
powershell Set-VMFirmware -VMname '%vmname%' -FirstBootDevice (Get-VMDvdDrive -VMName '%vmname%')[0]
rem Videoauflösung einstellen
powershell set-vmvideo -VMName '%vmname%' -ResolutionType Maximum -HorizontalResolution 1366 -VerticalResolution 768
rem automatische Start-/StoppAktionen einrichten
powershell Set-VM -VMName '%vmname%' -AutomaticStartAction StartIfRunning -AutomaticStopAction Save -Confirm:$false
rem ExposeVirtualizationExtensions
rem powershell Set-VMProcessor -VMName '%vmname%' -ExposeVirtualizationExtensions $true
echo.
powershell Start-VM -name '%vmname%'
echo.
powershell vmconnect $env:COMPUTERNAME '%vmname%'
goto eof
rem *** Fehlerbehandlung ***
:fehler
echo Es wurde ein Fehler gefunden
pause
:eof
echo Der Virenschutz wird aktiviert
echo bitte warten ...
powershell.exe -command "Set-MpPreference -DisableRealtimeMonitoring $false"
powershell.exe -command "Set-MpPreference -MAPSReporting Advanced"
powershell.exe -command "Set-MpPreference -SubmitSamplesConsent SendAllSamples"
powershell.exe -command "Set-MpPreference -DisableIntrusionPreventionSystem $false"
powershell.exe -command "Set-MpPreference -DisableIOAVProtection $false"
powershell.exe -command "Set-MpPreference -DisableScriptScanning $false"
powershell.exe -command "Set-MpPreference -EnableControlledFolderAccess Enabled"
powershell.exe -command "Set-MpPreference -EnableNetworkProtection Enabled"
powershell.exe -command "Set-MpPreference -ScanOnlyIfIdleEnabled:$false"
powershell.exe -command "Set-MpPreference -DisableRemovableDriveScanning:$false"
powershell.exe -command "Set-MpPreference -DisableEmailScanning:$false"
powershell.exe -command "Set-MpPreference -PUAProtection Enabled"
powercfg /setactive 381b4222-f694-41f0-9685-ff5bb260df2e
exit
REM Credits to Axel Vahldiek/c't
https://www.heise.de/ratgeber/c-t-Win2H ... 21599.html
https://ftp.heise.de/ct/listings/2021/2 ... _win11.zip
PDF24 angepasste Installation (nur PDF Druckertreiber) per Script: viewtopic.php?t=30284
Winget (Desktop App Installer) für Windows Versionen ohne Store installieren (HowTo): viewtopic.php?t=26214
Vorstellung: tiny11builder; Script zur Verschlankung von Windows 11: viewtopic.php?t=30134
Windows StartMenü Empfohlen (Recommended Section) komplett ausblenden: viewtopic.php?t=30574
Hyper-V VM per Script erstellen viewtopic.php?t=25114
Winget (Desktop App Installer) für Windows Versionen ohne Store installieren (HowTo): viewtopic.php?t=26214
Vorstellung: tiny11builder; Script zur Verschlankung von Windows 11: viewtopic.php?t=30134
Windows StartMenü Empfohlen (Recommended Section) komplett ausblenden: viewtopic.php?t=30574
Hyper-V VM per Script erstellen viewtopic.php?t=25114
- g-force
- Elite
- Beiträge: 2380
- Registriert: 07.10.2016, 19:30
- Hat sich bedankt: 353 Mal
- Danke erhalten: 355 Mal
- Gender:
Re: Hyper-V Virtuelle Maschine per Script erstellen; mein Lösungsansatz
Sorry, das ist mir zu hoch, geht nicht mehr in der 66er-Grips.
Es war als eine Vereinfachung zum Testen im "NTlite-Thread" gedacht.
Es war als eine Vereinfachung zum Testen im "NTlite-Thread" gedacht.
Windows VISTA x64 - Integration ALLER Updates: viewtopic.php?t=29624
Windows 7 x86/x64 - Integration ALLER Updates: viewtopic.php?t=26485
Windows 8.1 x86/x64 - Integration ALLER Updates: viewtopic.php?t=28193
Windows XP x86/x64 ISO mit allen Updates: viewtopic.php?t=28348
Mein Home-Server: http://gofile.me/7psKS/mVZltKndw
Windows 7 x86/x64 - Integration ALLER Updates: viewtopic.php?t=26485
Windows 8.1 x86/x64 - Integration ALLER Updates: viewtopic.php?t=28193
Windows XP x86/x64 ISO mit allen Updates: viewtopic.php?t=28348
Mein Home-Server: http://gofile.me/7psKS/mVZltKndw
- Holgi
- Elite
- Beiträge: 2663
- Registriert: 12.05.2018, 12:33
- Hat sich bedankt: 324 Mal
- Danke erhalten: 410 Mal
- Gender:
Re: Hyper-V Virtuelle Maschine per Script erstellen; mein Lösungsansatz
einfach mal als cmd abspeichern und auf einem Testrechner ausführen. Erklärt sich fast von selbst.
Löscht bereits vorhandene ISO und Hyper-V mit gleichem Namen -falls vorhanden- und erstellt dann die VM mit dem vorgegeben Namen und aus dem Verzeichnis mit den Windows Installationsdateien.
So teste ich eine neue VM nach der anderen.
Mehr nicht.
Löscht bereits vorhandene ISO und Hyper-V mit gleichem Namen -falls vorhanden- und erstellt dann die VM mit dem vorgegeben Namen und aus dem Verzeichnis mit den Windows Installationsdateien.
So teste ich eine neue VM nach der anderen.
Mehr nicht.
PDF24 angepasste Installation (nur PDF Druckertreiber) per Script: viewtopic.php?t=30284
Winget (Desktop App Installer) für Windows Versionen ohne Store installieren (HowTo): viewtopic.php?t=26214
Vorstellung: tiny11builder; Script zur Verschlankung von Windows 11: viewtopic.php?t=30134
Windows StartMenü Empfohlen (Recommended Section) komplett ausblenden: viewtopic.php?t=30574
Hyper-V VM per Script erstellen viewtopic.php?t=25114
Winget (Desktop App Installer) für Windows Versionen ohne Store installieren (HowTo): viewtopic.php?t=26214
Vorstellung: tiny11builder; Script zur Verschlankung von Windows 11: viewtopic.php?t=30134
Windows StartMenü Empfohlen (Recommended Section) komplett ausblenden: viewtopic.php?t=30574
Hyper-V VM per Script erstellen viewtopic.php?t=25114
- g-force
- Elite
- Beiträge: 2380
- Registriert: 07.10.2016, 19:30
- Hat sich bedankt: 353 Mal
- Danke erhalten: 355 Mal
- Gender:
Re: Hyper-V Virtuelle Maschine per Script erstellen; mein Lösungsansatz
Die "xxx.ps1" als CMD abspeichern? Oder habe ich das jetzt falsch verstanden?
Windows VISTA x64 - Integration ALLER Updates: viewtopic.php?t=29624
Windows 7 x86/x64 - Integration ALLER Updates: viewtopic.php?t=26485
Windows 8.1 x86/x64 - Integration ALLER Updates: viewtopic.php?t=28193
Windows XP x86/x64 ISO mit allen Updates: viewtopic.php?t=28348
Mein Home-Server: http://gofile.me/7psKS/mVZltKndw
Windows 7 x86/x64 - Integration ALLER Updates: viewtopic.php?t=26485
Windows 8.1 x86/x64 - Integration ALLER Updates: viewtopic.php?t=28193
Windows XP x86/x64 ISO mit allen Updates: viewtopic.php?t=28348
Mein Home-Server: http://gofile.me/7psKS/mVZltKndw
- Holgi
- Elite
- Beiträge: 2663
- Registriert: 12.05.2018, 12:33
- Hat sich bedankt: 324 Mal
- Danke erhalten: 410 Mal
- Gender:
Re: Hyper-V Virtuelle Maschine per Script erstellen; mein Lösungsansatz
Das script von 1:07uhr ist als .cmd abzuspeichern.
Name egal. Du wolltest ja kein .ps1 mehr.
Wenn Powershell bei dir gar nicht geht? Mal schauen, ob es so geht. Sind aber Powershell Befehle drin.
Name egal. Du wolltest ja kein .ps1 mehr.
Wenn Powershell bei dir gar nicht geht? Mal schauen, ob es so geht. Sind aber Powershell Befehle drin.
PDF24 angepasste Installation (nur PDF Druckertreiber) per Script: viewtopic.php?t=30284
Winget (Desktop App Installer) für Windows Versionen ohne Store installieren (HowTo): viewtopic.php?t=26214
Vorstellung: tiny11builder; Script zur Verschlankung von Windows 11: viewtopic.php?t=30134
Windows StartMenü Empfohlen (Recommended Section) komplett ausblenden: viewtopic.php?t=30574
Hyper-V VM per Script erstellen viewtopic.php?t=25114
Winget (Desktop App Installer) für Windows Versionen ohne Store installieren (HowTo): viewtopic.php?t=26214
Vorstellung: tiny11builder; Script zur Verschlankung von Windows 11: viewtopic.php?t=30134
Windows StartMenü Empfohlen (Recommended Section) komplett ausblenden: viewtopic.php?t=30574
Hyper-V VM per Script erstellen viewtopic.php?t=25114
- Holgi
- Elite
- Beiträge: 2663
- Registriert: 12.05.2018, 12:33
- Hat sich bedankt: 324 Mal
- Danke erhalten: 410 Mal
- Gender:
Re: Hyper-V Virtuelle Maschine per Script erstellen; mein Lösungsansatz
vlt. wäre ja auch die wim2vhd(x) Lösung etwas wie dich? Erspart den Umweg über die ISO Erstellung.
Hatte ich hier irgendwo auch schon mal vorgestellt.
Ansonsten hier:
https://www.windowspro.de/wolfgang-somm ... ll-hyper-v
https://www.windowspro.de/tool/wim-imag ... ndowsimage
Hatte ich hier irgendwo auch schon mal vorgestellt.
Ansonsten hier:
https://www.windowspro.de/wolfgang-somm ... ll-hyper-v
https://www.windowspro.de/tool/wim-imag ... ndowsimage
PDF24 angepasste Installation (nur PDF Druckertreiber) per Script: viewtopic.php?t=30284
Winget (Desktop App Installer) für Windows Versionen ohne Store installieren (HowTo): viewtopic.php?t=26214
Vorstellung: tiny11builder; Script zur Verschlankung von Windows 11: viewtopic.php?t=30134
Windows StartMenü Empfohlen (Recommended Section) komplett ausblenden: viewtopic.php?t=30574
Hyper-V VM per Script erstellen viewtopic.php?t=25114
Winget (Desktop App Installer) für Windows Versionen ohne Store installieren (HowTo): viewtopic.php?t=26214
Vorstellung: tiny11builder; Script zur Verschlankung von Windows 11: viewtopic.php?t=30134
Windows StartMenü Empfohlen (Recommended Section) komplett ausblenden: viewtopic.php?t=30574
Hyper-V VM per Script erstellen viewtopic.php?t=25114
- g-force
- Elite
- Beiträge: 2380
- Registriert: 07.10.2016, 19:30
- Hat sich bedankt: 353 Mal
- Danke erhalten: 355 Mal
- Gender:
Re: Hyper-V Virtuelle Maschine per Script erstellen; mein Lösungsansatz
Mein aktuelles Script sieht so aus, ich mußte einiges ändern:
Es funktioniert fast alles, die alte VM wird gelöscht, die neue VM eingerichtet und gestartet.
Obwohl die neue VHDX leer ist, kommt trotzdem ganz kurz die Abfrage "Zum Start von CD/DVD drücken Sie bitte den ANY KEY...".
Das geht leider so schnell, daß man nicht drücken kann - und ich will auch nicht drücken müssen. Wie kann ich das umgehen?
Außerdem suche ich noch den richtigen Parameter, um "Secure Boot" auszuschalten.
Code: Alles auswählen
@echo off
setlocal enabledelayedexpansion
COLOR 0a
chcp 1252 >nul
:: BatchGetAdmin
:-------------------------------------
REM --> Check for permissions
IF "%PROCESSOR_ARCHITECTURE%" EQU "amd64" (
>nul 2>&1 "%SYSTEMROOT%\SysWOW64\cacls.exe" "%SYSTEMROOT%\SysWOW64\config\system"
) ELSE (
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
)
REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
echo Requesting administrative privileges...
goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
set params= %*
echo UAC.ShellExecute "cmd.exe", "/c ""%~s0"" %params:"=""%", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
del "%temp%\getadmin.vbs"
exit /B
:gotAdmin
pushd "%CD%"
CD /D "%~dp0"
rem --------- Variablen fuer die VM setzen -----------
rem *** VM: Anzahl der virtuellen CPUs
set cpu=2
rem *** VM: Start-RAM-Groesse in MByte ***
set startram=2048
rem *** VM: Minmale RAM-Groesse in MByte ***
set minram=2048
rem *** VM: Maximale RAM-Groesse in MByte ***
set maxram=8192
rem *** VM: Netzwerkswitch auswaehlen. Zum Aktivieren "rem" vor der naechsten Zeile entfernen und bei Bedarf Switchname in Anfuehrungsstrichen (') anpassen
set switch=-switchname 'VLAN'
rem *** VM: Automatische Pruefpunkte an (1) oder aus (0)
set autocheckpoints=0
rem *** VM: Generation 1 (Legacy BIOS) oder 2 (UEFI)? ***
set gen=2
rem *** Nur für Generation 2: TPM aktiv? (0: aus, 1: an) ***
set TPM=0
if %gen%==2 set TPM=0
rem *** VM: Sicherer Start
set secure=0
rem *** VHD Größe in GB
set VHDSize=64GB
rem *** GEN1=vhd GEN2=vhdx
set format=vhd
if %gen%==2 set format=vhdx
rem *** Speicherpfad fuer VMs auslesen ***
echo.
set vmpfad=V:\HYPER-V
cls
echo Gespeichert wird die VM unter:
echo %vmpfad%
echo.
rem --------- Ende Variablen fuer die VM setzen -----------
echo.
ECHO \\!//
ECHO (o o)
ECHO -------------------------------oOOo-(_)-oOOo-------------------------------
echo Im folgenden Schritt geben Sie der VM einen Namen.
echo Sollte eine VM mit gleichem Namen bereits existieren,
echo wird diese unwiederbringlich entfernt...
Echo ---------------------------------------------------------------------------
set /p VMName="geben Sie der VM einen Namen (z.B. Windows11Pro): "
echo.
cls
rem set /p ISO="Pfad zu den Windows Installationsdateien (z.B. C:\Windows11_TPM): "
set ISO=C:\NTLITE\ISO
echo.
echo *** Einige Pruefungen vorab ... ***
echo.
IF NOT EXIST %VMPFAD% (
echo Das Verzeichnis %VMPFAD% ist nicht vorhanden
goto Fehler
)
set operation=*** Skript braucht mindestens Windows 10 Version 1709 ***
for /f "tokens=3" %%a in ('reg query ^"HKLM^\SOFTWARE^\Microsoft^\Windows NT^\CurrentVersion^" /v ^"ReleaseID^"') do set versionhost=%%a
if %versionhost% lss 1709 goto fehler
set operation=*** Skript muss mit Administratorrechten laufen ***
whoami /groups | find "S-1-16-12288" > nul
if errorlevel 1 goto fehler
set operation=*** Hyper-V muss aktiviert sein ***
dism /online /get-features /format:table | find "Microsoft-Hyper-V " | find "Aktiviert" > nul
if errorlevel 1 goto fehler
set operation=*** Hyper-V-Modul fuer Windows PowerShell muss aktiviert sein ***
dism /online /get-features /format:table | find "Microsoft-Hyper-V-Management-PowerShell" | find "Aktiviert" > nul
if errorlevel 1 goto fehler
cls
echo *** Keine Probleme gefunden, jetzt geht es los ***
echo.
Echo ********************************************************************
Echo Erstelle virtuelle Maschine %VMName%
echo aus dem Verzeichnis %ISO%
Echo bitte warten Sie einen Augenblick ...
Echo ********************************************************************
powercfg /setactive 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c
PowerShell Stop-VM -Name "%VMName%" -Force >nul
PowerShell Remove-VM -Name "%VMName%" -Force >nul
PowerShell Remove-Item "%VMPFAD%\%VMName%.vhdx" -Force >nul
del "%VMPFAD%\%VMName%.vhdx" /f /q 1>nul 2>nul
Echo "%VMName%" deleted !!
echo Erstelle VM %VMName%
powershell new-vm -name '%vmname%' -NewVHDPath "%VMName%.vhdx" -NewVHDSizeBytes %VHDSize% -MemoryStartupBytes %startram%MB -generation %gen% %switch%
Echo Virtuelle Maschine anpassen...
powershell set-vm -name '%vmname%' -ProcessorCount %cpu% -DynamicMemory -MemoryMaximumBytes %maxram%MB -MemoryMinimumBytes %minram%MB -AutomaticCheckpointsEnabled %autocheckpoints% -CheckpointType Disabled
powershell Enable-VMIntegrationService -VMName '%vmname%' -Name 'Gastdienstschnittstelle'
if %gen%==2 (
if %TPM%==1 (
powershell Set-VMKeyProtector -VMName '%vmname%' -NewLocalKeyProtector
powershell Enable-VMTPM -vmname '%vmname%'
)
)
if %gen%==1 (
powershell Remove-VMNetworkAdapter -vmname '%vmname%'
powershell Add-VMNetworkAdapter -vmname '%vmname%' -IsLegacy $true
)
rem Add DVD Drive to Virtual Machine
powershell Add-VMDvdDrive -VMName '%vmname%' -Path '%ISO%\%VMName%.iso'
rem Configure Virtual Machine to Boot from DVD
powershell Set-VMFirmware -VMname '%vmname%' -FirstBootDevice (Get-VMDvdDrive -VMName '%vmname%')[0]
rem Videoauflösung einstellen
powershell set-vmvideo -VMName '%vmname%' -ResolutionType Maximum -HorizontalResolution 1600 -VerticalResolution 1200
rem automatische Start-/StoppAktionen einrichten
powershell Set-VM -VMName '%vmname%' -AutomaticStartAction StartIfRunning -AutomaticStopAction Save -Confirm:$false
rem ExposeVirtualizationExtensions
rem powershell Set-VMProcessor -VMName '%vmname%' -ExposeVirtualizationExtensions $true
echo.
powershell Start-VM -name '%vmname%'
echo.
powershell vmconnect $env:COMPUTERNAME '%vmname%'
goto eof
rem *** Fehlerbehandlung ***
:fehler
echo Es wurde ein Fehler gefunden
pause
:eof
exit
REM Credits to Axel Vahldiek/c't
Obwohl die neue VHDX leer ist, kommt trotzdem ganz kurz die Abfrage "Zum Start von CD/DVD drücken Sie bitte den ANY KEY...".
Das geht leider so schnell, daß man nicht drücken kann - und ich will auch nicht drücken müssen. Wie kann ich das umgehen?
Außerdem suche ich noch den richtigen Parameter, um "Secure Boot" auszuschalten.
Windows VISTA x64 - Integration ALLER Updates: viewtopic.php?t=29624
Windows 7 x86/x64 - Integration ALLER Updates: viewtopic.php?t=26485
Windows 8.1 x86/x64 - Integration ALLER Updates: viewtopic.php?t=28193
Windows XP x86/x64 ISO mit allen Updates: viewtopic.php?t=28348
Mein Home-Server: http://gofile.me/7psKS/mVZltKndw
Windows 7 x86/x64 - Integration ALLER Updates: viewtopic.php?t=26485
Windows 8.1 x86/x64 - Integration ALLER Updates: viewtopic.php?t=28193
Windows XP x86/x64 ISO mit allen Updates: viewtopic.php?t=28348
Mein Home-Server: http://gofile.me/7psKS/mVZltKndw
- Holgi
- Elite
- Beiträge: 2663
- Registriert: 12.05.2018, 12:33
- Hat sich bedankt: 324 Mal
- Danke erhalten: 410 Mal
- Gender:
Re: Hyper-V Virtuelle Maschine per Script erstellen; mein Lösungsansatz
dafür nutze ich die folgenden Zeilen in meinem .cmd batch:
das mal nur so als Muster; ggf. müssen die Variablen noch angepasst werden
Code: Alles auswählen
cls
rem altes ISO löschen
del "%~dp0%VMName%.iso" /f /q
rem etwas warten
timeout /T 10 /NOBREAK >nul 2>nul
rem zum Verzeichnis mit den Windows Installationsdateien wechseln
cd %ISO%
cd efi\microsoft\boot
rem schauen ob noch Änderungen vorgenommen werden müssen (Press any Key)
if exist cdboot-prompt.efi goto burn
rem wenn ja, Dateien austauschen
Ren "cdboot.efi" "cdboot-prompt.efi"
Ren "cdboot_noprompt.efi" "cdboot.efi"
Ren "efisys.bin" "efisys_prompt.bin"
Ren "efisys_noprompt.bin" "efisys.bin"
neue ISO erstellen
:burn
"%ThisScriptsDirectory%Oscdimg\X64\oscdimg.exe" -m -o -u2 -udfver102 -bootdata:2#p0,e,b"%ThisScriptsDirectory%Oscdimg\X64\etfsboot.com"#pEF,e,b"%ThisScriptsDirectory%Oscdimg\X64\efisys.bin" %ISO% "%ThisScriptsDirectory%%VMName%.iso"
PDF24 angepasste Installation (nur PDF Druckertreiber) per Script: viewtopic.php?t=30284
Winget (Desktop App Installer) für Windows Versionen ohne Store installieren (HowTo): viewtopic.php?t=26214
Vorstellung: tiny11builder; Script zur Verschlankung von Windows 11: viewtopic.php?t=30134
Windows StartMenü Empfohlen (Recommended Section) komplett ausblenden: viewtopic.php?t=30574
Hyper-V VM per Script erstellen viewtopic.php?t=25114
Winget (Desktop App Installer) für Windows Versionen ohne Store installieren (HowTo): viewtopic.php?t=26214
Vorstellung: tiny11builder; Script zur Verschlankung von Windows 11: viewtopic.php?t=30134
Windows StartMenü Empfohlen (Recommended Section) komplett ausblenden: viewtopic.php?t=30574
Hyper-V VM per Script erstellen viewtopic.php?t=25114
- Holgi
- Elite
- Beiträge: 2663
- Registriert: 12.05.2018, 12:33
- Hat sich bedankt: 324 Mal
- Danke erhalten: 410 Mal
- Gender:
Re: Hyper-V Virtuelle Maschine per Script erstellen; mein Lösungsansatz
Set-VMFirmware -VMName %VMNAME% -DisableSecureBoot
SecureBoot ist bei einer Hyper-V Gen2 voreingestellt.
PDF24 angepasste Installation (nur PDF Druckertreiber) per Script: viewtopic.php?t=30284
Winget (Desktop App Installer) für Windows Versionen ohne Store installieren (HowTo): viewtopic.php?t=26214
Vorstellung: tiny11builder; Script zur Verschlankung von Windows 11: viewtopic.php?t=30134
Windows StartMenü Empfohlen (Recommended Section) komplett ausblenden: viewtopic.php?t=30574
Hyper-V VM per Script erstellen viewtopic.php?t=25114
Winget (Desktop App Installer) für Windows Versionen ohne Store installieren (HowTo): viewtopic.php?t=26214
Vorstellung: tiny11builder; Script zur Verschlankung von Windows 11: viewtopic.php?t=30134
Windows StartMenü Empfohlen (Recommended Section) komplett ausblenden: viewtopic.php?t=30574
Hyper-V VM per Script erstellen viewtopic.php?t=25114
- g-force
- Elite
- Beiträge: 2380
- Registriert: 07.10.2016, 19:30
- Hat sich bedankt: 353 Mal
- Danke erhalten: 355 Mal
- Gender:
Re: Hyper-V Virtuelle Maschine per Script erstellen; mein Lösungsansatz
Könntest Du mal versuchen, daß in mein Script einzubauen? Ich kriege es nicht hin.
Außerdem verstehe ich nicht ganz, was das Script macht. Wird die ISO gemountet, untersucht, verändert, dann wieder erstellt?
Außerdem verstehe ich nicht ganz, was das Script macht. Wird die ISO gemountet, untersucht, verändert, dann wieder erstellt?
Windows VISTA x64 - Integration ALLER Updates: viewtopic.php?t=29624
Windows 7 x86/x64 - Integration ALLER Updates: viewtopic.php?t=26485
Windows 8.1 x86/x64 - Integration ALLER Updates: viewtopic.php?t=28193
Windows XP x86/x64 ISO mit allen Updates: viewtopic.php?t=28348
Mein Home-Server: http://gofile.me/7psKS/mVZltKndw
Windows 7 x86/x64 - Integration ALLER Updates: viewtopic.php?t=26485
Windows 8.1 x86/x64 - Integration ALLER Updates: viewtopic.php?t=28193
Windows XP x86/x64 ISO mit allen Updates: viewtopic.php?t=28348
Mein Home-Server: http://gofile.me/7psKS/mVZltKndw
- Holgi
- Elite
- Beiträge: 2663
- Registriert: 12.05.2018, 12:33
- Hat sich bedankt: 324 Mal
- Danke erhalten: 410 Mal
- Gender:
Re: Hyper-V Virtuelle Maschine per Script erstellen; mein Lösungsansatz
der Grundgedanke hinter dem Ganzen ist, wie wir beide es gerne hätten:
schnell mal eben ein Windows System (vornehmlich Windows 10 bzw. Windows 11 mit TPM) in einer neu angelegten Hyper-VM (Gen2) anzulegen, ohne den Hyper-V Manager bemühen zu müssen.
Darüberhinaus soll, - wenn denn der Name der VM bzw. das Verzeichnis mit den Windows Installationsdateien (aus den nachfolgend immer erst eine ISO erzeugt wird - die alte ISO und die VM gelöscht werden.
Wenn also beispielsweise mal eine Änderung an der autounattend.xml oder an der install.wim bzw. install.esd in dem Verzeichnis (deinem Beispiel folgenden NTLite) mit den Windows Installationsdateien vorgenommen wurde und es soll getestet werden, ob und oder wie sich das nun verhält, dann einfach das Script aufgerufen:
- alte ISO löschen
- ISO neu erstellen
- VM löschen
- VM neu anlegen
usw. usw. >
Ich nenne es "fire and forget"
Da ja auch noch die autounattend.xml mit eingebunden ist, kann man sich nach dem Start des Scripts anderen Dingen widmen.
Irgendwann kommt man an den PC zurück und bestenfalls läuft dann schon die neue VM in einem neuen Fenster.
Ich gehe in meinem Script so weit, dass alles den gleichen Namen hat:
- die ISO
- das Verzeichnis mit den Windows Installationsdateien (bei mir immer unter C:\; wäre also hier C:\NTLite)
- der Name der VM
so behalte ich am besten den Überblick, was / wozu gehört (welche vhdx, zu welcher iso, mit welchen Installationsdateien erzeugt)
Einige Sachen kann man sicherlich weglassen:
- Energieschema auf High Performance setzen (powercfg /setactive 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c)
- bei mir noch: den Defender kurzfristig ausschalten
usw.
PDF24 angepasste Installation (nur PDF Druckertreiber) per Script: viewtopic.php?t=30284
Winget (Desktop App Installer) für Windows Versionen ohne Store installieren (HowTo): viewtopic.php?t=26214
Vorstellung: tiny11builder; Script zur Verschlankung von Windows 11: viewtopic.php?t=30134
Windows StartMenü Empfohlen (Recommended Section) komplett ausblenden: viewtopic.php?t=30574
Hyper-V VM per Script erstellen viewtopic.php?t=25114
Winget (Desktop App Installer) für Windows Versionen ohne Store installieren (HowTo): viewtopic.php?t=26214
Vorstellung: tiny11builder; Script zur Verschlankung von Windows 11: viewtopic.php?t=30134
Windows StartMenü Empfohlen (Recommended Section) komplett ausblenden: viewtopic.php?t=30574
Hyper-V VM per Script erstellen viewtopic.php?t=25114
- Holgi
- Elite
- Beiträge: 2663
- Registriert: 12.05.2018, 12:33
- Hat sich bedankt: 324 Mal
- Danke erhalten: 410 Mal
- Gender:
Re: Hyper-V Virtuelle Maschine per Script erstellen; mein Lösungsansatz
Gehst du in deinem Script von einer bereits vorliegenden fertigen ISO aus (z.B. PREMIUM_ESD.iso) oder soll die ISO erst noch aus einem Verzeichnis mit den Windows Installationsdateien (z.B. C:\NTLITE\ISO\) erstellt werden?Könntest Du mal versuchen, daß in mein Script einzubauen? Ich kriege es nicht hin.
Der VM wird ja mit der Zeile:
Code: Alles auswählen
rem Add DVD Drive to Virtual Machine
powershell Add-VMDvdDrive -VMName '%vmname%' -Path '%ISO%\%VMName%.iso'
Dann müßte aber unter C:\NTLITE\ISO
(wegen der Zeile)
Code: Alles auswählen
set ISO=C:\NTLITE\ISO
Code: Alles auswählen
set /p VMName="geben Sie der VM einen Namen (z.B. Windows11Pro): "
Code: Alles auswählen
:burn
rem "%~dp0Oscdimg\X64\oscdimg.exe" -m -o -u2 -udfver102 -bootdata:2#p0,e,b"%~dp0Oscdimg\X64\etfsboot.com"#pEF,e,b"%~dp0Oscdimg\X64\efisys.bin" %ISO% "%VMName%.iso"
"%ThisScriptsDirectory%Oscdimg\X64\oscdimg.exe" -m -o -u2 -udfver102 -bootdata:2#p0,e,b"%ThisScriptsDirectory%Oscdimg\X64\etfsboot.com"#pEF,e,b"%ThisScriptsDirectory%Oscdimg\X64\efisys.bin" %ISO% "%ThisScriptsDirectory%%VMName%.iso"
Dieses OSCDIMG - Zeugs (etfsboot.com, efisys.bin, oscdimg.exe liegt in der X64 Variante im gleichen Verzeichnis mit dem auszuführenden Script (Oscdimg\X64\...)
Die Zeile
Code: Alles auswählen
del "%~dp0%VMName%.iso" /f /q
macht da also keinen Sinn, da ja dort eine ISO im Scriptverzeichnis gelöscht wird (wenn überhaupt vorhanden).
PDF24 angepasste Installation (nur PDF Druckertreiber) per Script: viewtopic.php?t=30284
Winget (Desktop App Installer) für Windows Versionen ohne Store installieren (HowTo): viewtopic.php?t=26214
Vorstellung: tiny11builder; Script zur Verschlankung von Windows 11: viewtopic.php?t=30134
Windows StartMenü Empfohlen (Recommended Section) komplett ausblenden: viewtopic.php?t=30574
Hyper-V VM per Script erstellen viewtopic.php?t=25114
Winget (Desktop App Installer) für Windows Versionen ohne Store installieren (HowTo): viewtopic.php?t=26214
Vorstellung: tiny11builder; Script zur Verschlankung von Windows 11: viewtopic.php?t=30134
Windows StartMenü Empfohlen (Recommended Section) komplett ausblenden: viewtopic.php?t=30574
Hyper-V VM per Script erstellen viewtopic.php?t=25114
- g-force
- Elite
- Beiträge: 2380
- Registriert: 07.10.2016, 19:30
- Hat sich bedankt: 353 Mal
- Danke erhalten: 355 Mal
- Gender:
Re: Hyper-V Virtuelle Maschine per Script erstellen; mein Lösungsansatz
Vielen Dank für die gute Erklärung!
Ja, wie gewohnt habe ich eine fertige ISO im Verzeichnis "C:\NTLITE\ISO" liegen. Auf die Idee, daß das Script einen entpackten ISO-Ordner erwatertet, bin ich gar nicht gekommen. Das erklärt nun auch meine Verwunderung bei Durchsicht des Scripts. Ich trage am Anfang der Script-Verarbeit den Namen der ISO (ohne Dateiendung) ein.
Das EFI-Zeugs kann ich mir dann ja schenken, ich suche mir eine Lösung, die das schon vorher bearbeitet. Ich meine sogar, daß es da was in NTlite gibt. Den Defender-Teil hatte ich schon rausgenommen.
Ja, wie gewohnt habe ich eine fertige ISO im Verzeichnis "C:\NTLITE\ISO" liegen. Auf die Idee, daß das Script einen entpackten ISO-Ordner erwatertet, bin ich gar nicht gekommen. Das erklärt nun auch meine Verwunderung bei Durchsicht des Scripts. Ich trage am Anfang der Script-Verarbeit den Namen der ISO (ohne Dateiendung) ein.
Zuletzt geändert von g-force am 02.03.2023, 08:12, insgesamt 1-mal geändert.
Windows VISTA x64 - Integration ALLER Updates: viewtopic.php?t=29624
Windows 7 x86/x64 - Integration ALLER Updates: viewtopic.php?t=26485
Windows 8.1 x86/x64 - Integration ALLER Updates: viewtopic.php?t=28193
Windows XP x86/x64 ISO mit allen Updates: viewtopic.php?t=28348
Mein Home-Server: http://gofile.me/7psKS/mVZltKndw
Windows 7 x86/x64 - Integration ALLER Updates: viewtopic.php?t=26485
Windows 8.1 x86/x64 - Integration ALLER Updates: viewtopic.php?t=28193
Windows XP x86/x64 ISO mit allen Updates: viewtopic.php?t=28348
Mein Home-Server: http://gofile.me/7psKS/mVZltKndw
- g-force
- Elite
- Beiträge: 2380
- Registriert: 07.10.2016, 19:30
- Hat sich bedankt: 353 Mal
- Danke erhalten: 355 Mal
- Gender:
Re: Hyper-V Virtuelle Maschine per Script erstellen; mein Lösungsansatz
Hier habe ich wohl noch einen Fehler drin, es wird keine ISO erstellt in "%ISO%":
Code: Alles auswählen
rem zum Verzeichnis mit den Windows Installationsdateien wechseln
cd %ISO%\%VMNAME%
cd efi\microsoft\boot
rem schauen ob noch Änderungen vorgenommen werden müssen (Press any Key)
if exist cdboot-prompt.efi goto burn
rem wenn ja, Dateien austauschen
Ren "cdboot.efi" "cdboot-prompt.efi"
Ren "cdboot_noprompt.efi" "cdboot.efi"
Ren "efisys.bin" "efisys_prompt.bin"
Ren "efisys_noprompt.bin" "efisys.bin"
rem neue ISO erstellen
:burn
rem "%~dp0Oscdimg\X64\oscdimg.exe" -m -o -u2 -udfver102 -bootdata:2#p0,e,b"%~dp0Oscdimg\X64\etfsboot.com"#pEF,e,b"%~dp0Oscdimg\X64\efisys.bin" %ISO% "%VMName%.iso"
"%ISO%\%VMName%Oscdimg\X64\oscdimg.exe" -m -o -u2 -udfver102 -bootdata:2#p0,e,b"%ISO%\%VMName%Oscdimg\X64\etfsboot.com"#pEF,e,b"%ISO%\%VMName%Oscdimg\X64\efisys.bin" "%VMName%.iso"
Windows VISTA x64 - Integration ALLER Updates: viewtopic.php?t=29624
Windows 7 x86/x64 - Integration ALLER Updates: viewtopic.php?t=26485
Windows 8.1 x86/x64 - Integration ALLER Updates: viewtopic.php?t=28193
Windows XP x86/x64 ISO mit allen Updates: viewtopic.php?t=28348
Mein Home-Server: http://gofile.me/7psKS/mVZltKndw
Windows 7 x86/x64 - Integration ALLER Updates: viewtopic.php?t=26485
Windows 8.1 x86/x64 - Integration ALLER Updates: viewtopic.php?t=28193
Windows XP x86/x64 ISO mit allen Updates: viewtopic.php?t=28348
Mein Home-Server: http://gofile.me/7psKS/mVZltKndw
- Holgi
- Elite
- Beiträge: 2663
- Registriert: 12.05.2018, 12:33
- Hat sich bedankt: 324 Mal
- Danke erhalten: 410 Mal
- Gender:
Re: Hyper-V Virtuelle Maschine per Script erstellen; mein Lösungsansatz
NTLite wollte das mit "Press any Key" erwägen einzubinden. Ist wohl nichts draus geworden:
https://www.ntlite.com/community/index. ... -dvd.2147/
https://www.ntlite.com/community/index. ... -dvd.2147/
PDF24 angepasste Installation (nur PDF Druckertreiber) per Script: viewtopic.php?t=30284
Winget (Desktop App Installer) für Windows Versionen ohne Store installieren (HowTo): viewtopic.php?t=26214
Vorstellung: tiny11builder; Script zur Verschlankung von Windows 11: viewtopic.php?t=30134
Windows StartMenü Empfohlen (Recommended Section) komplett ausblenden: viewtopic.php?t=30574
Hyper-V VM per Script erstellen viewtopic.php?t=25114
Winget (Desktop App Installer) für Windows Versionen ohne Store installieren (HowTo): viewtopic.php?t=26214
Vorstellung: tiny11builder; Script zur Verschlankung von Windows 11: viewtopic.php?t=30134
Windows StartMenü Empfohlen (Recommended Section) komplett ausblenden: viewtopic.php?t=30574
Hyper-V VM per Script erstellen viewtopic.php?t=25114