Hyper-V Virtuelle Maschine per Script erstellen; mein Lösungsansatz

Deine Frage passt nicht in die anderen Bereiche, dann stelle sie hier.
Benutzeravatar
Holgi
Elite
Elite
Beiträge: 2239
Registriert: 12.05.2018, 12:33
Hat sich bedankt: 234 Mal
Danke erhalten: 314 Mal
Gender:

Re: Hyper-V Virtuelle Maschine per Script erstellen; mein Lösungsansatz

Beitrag von Holgi » 02.03.2023, 08:36

g-force hat geschrieben: 02.03.2023, 08:11 Hier habe ich wohl noch einen Fehler drin, es wird keine ISO erstellt in "%ISO%":
was denn nun?
Ich dachte, du brauchst den ISO Erstellungsteil nicht, weil du bereits eine fertige ISO (von NTLite erzeugt?) nutzt:
Ja, wie gewohnt habe ich eine fertige ISO im Verzeichnis "C:\NTLITE\ISO" liegen.
Dann benötigst du dieses ISO Erstellungszeug doch gar nicht.
Oder möchtest du jetzt doch (nur) die "Press any Key" Geschichte von mir übernehmen?
bitte noch mal das Problem erläutern.
Zuletzt geändert von Holgi am 02.03.2023, 08:45, insgesamt 1-mal geändert.
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

Tante Google

Re: Hyper-V Virtuelle Maschine per Script erstellen; mein Lösungsansatz

Beitrag von Tante Google » 02.03.2023, 08:36


Benutzeravatar
Holgi
Elite
Elite
Beiträge: 2239
Registriert: 12.05.2018, 12:33
Hat sich bedankt: 234 Mal
Danke erhalten: 314 Mal
Gender:

Re: Hyper-V Virtuelle Maschine per Script erstellen; mein Lösungsansatz

Beitrag von Holgi » 02.03.2023, 08:40

ein unabhängiges Script nur für die Änderung der ISO um "press any key" loszuwerden sehe so aus:

Code: Alles auswählen

@Echo off
set /p ISO="Pfad zu den Windows Installationsdateien (z.B. C:\ISO VI): "
echo.
if exist "%ISO%\efi\microsoft\boot\cdboot-prompt.efi" goto end

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
goto final

:end
Echo keine Dateien zum umbenennen vorhanden

:final
pause
dann anschließend alles wieder in eine ISO verpacken.
Zuletzt geändert von Holgi am 02.03.2023, 08:58, insgesamt 1-mal geändert.
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

Benutzeravatar
g-force
Elite
Elite
Beiträge: 2063
Registriert: 07.10.2016, 19:30
Hat sich bedankt: 285 Mal
Danke erhalten: 252 Mal
Gender:

Re: Hyper-V Virtuelle Maschine per Script erstellen; mein Lösungsansatz

Beitrag von g-force » 02.03.2023, 08:40

Ich bin mir ziemlich sicher, daß es die Funktion mal gab in NTlite.

Hast Du noch einen Tipp zu meinem Script? Ich kann es ja leider doch nicht mit NTlite machen, also möchte ich deine Variante nutzen.
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
Windows XP x86/x64 - Setup von WIM (XP2ESD): viewtopic.php?t=28372

Benutzeravatar
Holgi
Elite
Elite
Beiträge: 2239
Registriert: 12.05.2018, 12:33
Hat sich bedankt: 234 Mal
Danke erhalten: 314 Mal
Gender:

Re: Hyper-V Virtuelle Maschine per Script erstellen; mein Lösungsansatz

Beitrag von Holgi » 02.03.2023, 08:55

wenn du jetzt doch die ISO mit dem Script und Windows Boardmitteln erstellen möchtest (anstelle eine fertige ISO von Ntlite zu nutzen), dann brauchst du dieses Zeugs aus dem ADK Kit
https://answers.microsoft.com/en-us/win ... db469405a0
Antwort dort von Tekkie Boy
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

Benutzeravatar
g-force
Elite
Elite
Beiträge: 2063
Registriert: 07.10.2016, 19:30
Hat sich bedankt: 285 Mal
Danke erhalten: 252 Mal
Gender:

Re: Hyper-V Virtuelle Maschine per Script erstellen; mein Lösungsansatz

Beitrag von g-force » 02.03.2023, 11:50

Achso, dann ist das nicht für jeden User direkt anwendbar und fällt für mich aus. Dann gehe ich doch den Weg über die fertige ISO und lasse den Teil (ISO-Erstellung) aus.
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
Windows XP x86/x64 - Setup von WIM (XP2ESD): viewtopic.php?t=28372

Benutzeravatar
Holgi
Elite
Elite
Beiträge: 2239
Registriert: 12.05.2018, 12:33
Hat sich bedankt: 234 Mal
Danke erhalten: 314 Mal
Gender:

Re: Hyper-V Virtuelle Maschine per Script erstellen; mein Lösungsansatz

Beitrag von Holgi » 02.03.2023, 12:37

ja, ist schon echt blöd, dass MS so etwas nicht gleich mit dem Betriebssystem ausliefert.
Linux hat so etwas mit mkisofs an Board.

Code: Alles auswählen

mkisofs [parameter] -o datei.iso /tmp/daten
Hilft uns jetzt aber hier nicht weiter.
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

Benutzeravatar
g-force
Elite
Elite
Beiträge: 2063
Registriert: 07.10.2016, 19:30
Hat sich bedankt: 285 Mal
Danke erhalten: 252 Mal
Gender:

Re: Hyper-V Virtuelle Maschine per Script erstellen; mein Lösungsansatz

Beitrag von g-force » 02.03.2023, 13:06

Ich habe dein Standalone-Script für den Prompt so umgebaut:
@Echo off
set /p ISO="C:\NTLITE\ISO\PREMIUM_ESD"
echo.
if exist "%ISO%\efi\microsoft\boot\cdboot-prompt.efi" goto end

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
goto final

:end
Echo keine Dateien zum umbenennen vorhanden

:final
pause
Leider passiert da nichts, die Dateien werden nicht umbenannt.
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
Windows XP x86/x64 - Setup von WIM (XP2ESD): viewtopic.php?t=28372

Benutzeravatar
Holgi
Elite
Elite
Beiträge: 2239
Registriert: 12.05.2018, 12:33
Hat sich bedankt: 234 Mal
Danke erhalten: 314 Mal
Gender:

Re: Hyper-V Virtuelle Maschine per Script erstellen; mein Lösungsansatz

Beitrag von Holgi » 02.03.2023, 13:28

evtl. weil dieses Script oder ein vorheriges in einer Batch eingebaut funktioniert hat?
Schau:
in einer Original ISO sind die Dateien
cdboot_noprompt.efi
und
efisys_noprompt.bin
vorhanden.
Nach der Umbenennung durch das Script wird aus noprompt > prompt
Findet das Script jetzt cdboot-prompt.efi weiß, es, dass der User schon mal diesen Windows Installationsordner mit dem Script bearbeitet hat und übergeht die Schritte.
Also mal eben genau schauen: prompt oder noprompt?
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

Benutzeravatar
g-force
Elite
Elite
Beiträge: 2063
Registriert: 07.10.2016, 19:30
Hat sich bedankt: 285 Mal
Danke erhalten: 252 Mal
Gender:

Re: Hyper-V Virtuelle Maschine per Script erstellen; mein Lösungsansatz

Beitrag von g-force » 02.03.2023, 13:35

Ich habe die ISO natürlich für jeden Test neu entpackt, also den Originalzustand wiederhergestellt.
EFI.JPG
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
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
Windows XP x86/x64 - Setup von WIM (XP2ESD): viewtopic.php?t=28372

Benutzeravatar
Holgi
Elite
Elite
Beiträge: 2239
Registriert: 12.05.2018, 12:33
Hat sich bedankt: 234 Mal
Danke erhalten: 314 Mal
Gender:

Re: Hyper-V Virtuelle Maschine per Script erstellen; mein Lösungsansatz

Beitrag von Holgi » 02.03.2023, 13:36

Fehler gefunden:
set iso ohne /p!!

Code: Alles auswählen

@Echo off
set ISO="C:\NTLITE\ISO\PREMIUM_ESD"
echo.
if exist "%ISO%\efi\microsoft\boot\cdboot-prompt.efi" goto end
pause

Ren "%ISO%\efi\microsoft\boot\cdboot.efi" cdboot-prompt.efi
pause
Ren "%ISO%\efi\microsoft\boot\cdboot_noprompt.efi" cdboot.efi
pause
Ren "%ISO%\efi\microsoft\boot\efisys.bin" efisys_prompt.bin
pause
Ren "%ISO%\efi\microsoft\boot\efisys_noprompt.bin" efisys.bin
pause
goto final

:end
Echo keine Dateien zum umbenennen vorhanden
pause

:final
pause
hatte nicht gesehen, dass du das Verzeichnis bereits vorgibst. Bei mir wird es ja abgefragt. Dann greift set mit /p und Text hinterher. Sorry!
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

Benutzeravatar
g-force
Elite
Elite
Beiträge: 2063
Registriert: 07.10.2016, 19:30
Hat sich bedankt: 285 Mal
Danke erhalten: 252 Mal
Gender:

Re: Hyper-V Virtuelle Maschine per Script erstellen; mein Lösungsansatz

Beitrag von g-force » 02.03.2023, 18:34

So, jetzt habe ich es! Ich hatte selber kleine Fehler eingebaut, so daß die ISO nicht gefunden wurde. So klappt es jetzt, auch mit der Vorarbeit (Prompt):

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 *** 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 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 ********************************************************************


PowerShell Stop-VM -Name "%VMName%" -Force >nul
PowerShell Remove-VM -Name "%VMName%" -Force >nul
PowerShell Remove-Item "%VMPFAD%\%VMName%.vhdx" -Force >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

PAUSE

exit

REM Credits to Axel Vahldiek/c't
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
Windows XP x86/x64 - Setup von WIM (XP2ESD): viewtopic.php?t=28372

Benutzeravatar
g-force
Elite
Elite
Beiträge: 2063
Registriert: 07.10.2016, 19:30
Hat sich bedankt: 285 Mal
Danke erhalten: 252 Mal
Gender:

Re: Hyper-V Virtuelle Maschine per Script erstellen; mein Lösungsansatz

Beitrag von g-force » 02.03.2023, 19:13

Was mich noch wundert: Obwohl ich hier den Pfad %vmpfad% geändert habe, wird die VHDX weiterhin in "V:\HYPER-V" erstellt (der Pfad ist auch im Hyper-V-Manager eingetragen - mein normaler Standardpfad, ich wollte es nur für dieses Projekt ändern).

Code: Alles auswählen

rem *** Speicherpfad fuer VMs auslesen ***
echo.
set vmpfad=C:\NTLITE\VM
cls
echo Gespeichert wird die VM unter: 
echo %vmpfad%
echo.
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
Windows XP x86/x64 - Setup von WIM (XP2ESD): viewtopic.php?t=28372

Benutzeravatar
Holgi
Elite
Elite
Beiträge: 2239
Registriert: 12.05.2018, 12:33
Hat sich bedankt: 234 Mal
Danke erhalten: 314 Mal
Gender:

Re: Hyper-V Virtuelle Maschine per Script erstellen; mein Lösungsansatz

Beitrag von Holgi » 02.03.2023, 20:07

ich blicke da auch nicht so genau durch.
Aber es gibt da zwei Befehle, die irgendwie dafür verantwortlich sind:
1.

Code: Alles auswählen

powershell Set-VMHost -VirtualMachinePath "C:\NTLITE\VM"
oder
2. bei der Erstellung der VM der part -newVHDPath

Code: Alles auswählen

powershell new-vm -name '%vmname%' -NewVHDPath "%VMName%.vhdx" ...
versuche mal die Nr. 1
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

Benutzeravatar
g-force
Elite
Elite
Beiträge: 2063
Registriert: 07.10.2016, 19:30
Hat sich bedankt: 285 Mal
Danke erhalten: 252 Mal
Gender:

Re: Hyper-V Virtuelle Maschine per Script erstellen; mein Lösungsansatz

Beitrag von g-force » 02.03.2023, 20:23

Das war`s:

Code: Alles auswählen

powershell new-vm -name '%vmname%' -NewVHDPath "%VMPFAD%\%VMName%.vhdx" ...
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
Windows XP x86/x64 - Setup von WIM (XP2ESD): viewtopic.php?t=28372

Benutzeravatar
g-force
Elite
Elite
Beiträge: 2063
Registriert: 07.10.2016, 19:30
Hat sich bedankt: 285 Mal
Danke erhalten: 252 Mal
Gender:

Re: Hyper-V Virtuelle Maschine per Script erstellen; mein Lösungsansatz

Beitrag von g-force » 02.03.2023, 23:13

Hier nochmal das komplette Script:

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 *** 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=C:\NTLITE\VM
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 den Namen der ISO ein (z.B. NTlite): "
echo.
cls
rem set 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 ********************************************************************


PowerShell Stop-VM -Name "%VMName%" -Force >nul
PowerShell Remove-VM -Name "%VMName%" -Force >nul
PowerShell Remove-Item "%VMPFAD%\%VMName%.vhdx" -Force >nul
Echo "%VMName%" deleted !!

echo Erstelle VM %VMName%
powershell new-vm -name '%vmname%' -NewVHDPath "%VMPFAD%\%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
REM modded by Holgi & g-force @ Deskmodder.de
Dieses Script gehört zu meinem Thread "NTlite": viewtopic.php?t=29978
Dort lernen wir, wie wir mit NTlite eine angepasste ISO erstellen - das Script installiert diese ISO automatisch in einer VM (Hyper-V).
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
Windows XP x86/x64 - Setup von WIM (XP2ESD): viewtopic.php?t=28372

Antworten