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

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smileys
:) ;) :smile: :lol: :hihi: :D :rofl: :muahah: :( :pff: :kopfstreichel: :ohno: :betruebt: :heulen: :kopfkratz: :duckundweg: :o :? :oops: :psst: :sauer: :-P :daumenrunter: :daumen: :dankeschoen: :thx: :dafür: :gähn:
Mehr Smileys anzeigen

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Ansicht erweitern Die letzten Beiträge des Themas: Hyper-V Virtuelle Maschine per Script erstellen; mein Lösungsansatz

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

von g-force » 04.03.2023, 20:11

Mir wird das auch zu hoch. Außerdem denke ich, daß mich das Script im NTlite-Thread nicht unbedingt voran bringt, da ich lieber die komplette ISO teste als nur die WIM. Außerdem funktioniert das Ganze nicht mit einer ESD.

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

von Holgi » 04.03.2023, 19:42

ich bin da leider raus, da keine Ahnung von diesem Zeug. Vlt. kann @DK2000 da weiterhelfen?

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

von g-force » 04.03.2023, 17:42

In etwa so, oder habe ich das falsch verstanden?

Code: Alles auswählen

rem ISO zu VHDX konvertieren
powershell C:\NTLITE\SCRIPTS\CMD\Convert-WindowsImage.ps1 -SourcePath "%ISO%\%VMNAME%\sources\install.wim" -VHDFormat "VHDX" -Index "1" -SizeBytes 50GB -DiskLayout "UEFI" -VHDPath "%VMPFAD%\%VMNAME%.vhdx" -UnattendPath "%ISO%\%VMNAME%\autounattend.xml"

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

von Holgi » 04.03.2023, 17:26

habe hier was ähnliches gefunden; vlt. kann man da etwas von gebrauchen:
https://scripts.adamrehn.com/

Code: Alles auswählen

# Be sure to run this from a PowerShell prompt with administrative priveleges

# Download the latest version of `Convert-WindowsImage.psm1` from the Microsoft virtualisation tools repository
Set-ExecutionPolicy Bypass -Scope Process -Force;
iex ((New-Object System.Net.WebClient).DownloadString(`
	'https://raw.githubusercontent.com/MicrosoftDocs/Virtualization-Documentation/' + `
	'master/hyperv-tools/Convert-WindowsImage/Convert-WindowsImage.psm1'`
))

# Replace these values with the appropriate Windows Insider build number and ISO image file path
$previewBuild = '20150'
$insiderISO = "${env:HOMEDRIVE}${env:HOMEPATH}\Desktop\Windows10_InsiderPreview_Client_x64_en-us_${previewBuild}.iso"
$insiderVHDX = $insiderISO.Replace('.iso', '.vhdx')

# Create a VHDX image and populate it with the contents of the Windows Insider ISO image
Convert-WindowsImage `
	-SourcePath  $insiderISO `
	-VHDPath     $insiderVHDX `
	-VhdType     'Fixed' `
	-SizeBytes   80GB `
	-DiskLayout  'UEFI' `
	-Edition     'Windows 10 Pro' `
	-BCDinVHD    'NativeBoot' `
	-RemoteDesktopEnable

# Mount the created VHDX image and retrieve the drive letter of the mounted partition
$mounted = (Mount-VHD -Path $insiderVHDX -PassThru | Get-Disk | Get-Partition | Get-Volume).DriveLetter

# Create a boot entry for the VHDX image (this will automatically be set to the default boot entry)
bcdboot "${mounted}:\Windows"

# Set a human-readable description for the boot entry
bcdedit /set '{default}' DESCRIPTION "Windows Insider Build ${previewBuild}"

# Unmount the VHDX image
Dismount-VHD -Path $insiderVHDX

# Verify that the boot entry was configured correctly
bcdedit /enum

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

von DK2000 » 04.03.2023, 17:24

Ja, das geht, ist halt nur umständliche Schreibweise:

Code: Alles auswählen

powershell -Command "& '<Pfad>\Convert-WindowsImage.ps1' <Argumente>"
daher ja der Vorschlag weiter oben, die Variable für die Schalter zu setzen:

Code: Alles auswählen

Set switches=-ExecutionPolicy RemoteSigned -NoLogo -Command
-ExecutionPolicy kann man dann auch weglassen, wenn man das generell für das Profil oder Global eingestellt hat.

Das macht dann alles übersichtlicher:

Code: Alles auswählen

powershell %switches% "& '<Pfad>\Convert-WindowsImage.ps1' <Argumente>"
Das funktioniert schon, ist nur umständlicher.

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

von Holgi » 04.03.2023, 17:19

ah, jetzt bin ich wieder eingenordet. Sorry. @g-force hatte ja geschrieben, dass es über das cmd/bat Script laufen soll.
Da bin ich überfragt. Das wäre natürlich toll, wenn das ginge. Habe ich aber noch nirgendwo gesehen, dass jemand das aus einem anderen Script heraus aufruft.
@g-force:
vlt. erst mal ohne die Einbindung versuchen? Sind dann halt ein paar Schritte, aber es lohnt sich.

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

von DK2000 » 04.03.2023, 17:10

Ja, jetzt führe mal aber die Convert-WindowsImage.ps1 in der Eingabeaufforderung über powershell.exe aus. Das sieht das Ganze ganz anderes und wesentlich komplizierter aus.

Und wenn Du die Richtlinie auf "RemoteSigned" stellst, dann fällt die Frage weg.

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

von Holgi » 04.03.2023, 17:08

vlt. noch wichtig an der Stelle:
Powershell als Administrator und CD ins Directory mit dem convert-windowsimage.ps1 und allen anderen Dateien (WIM, autounattend, etc.)
Sieht bei mir so aus (Hardcopy):
convertImage.JPG

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

von DK2000 » 04.03.2023, 17:05

Ja, es hat schon etwas damit zu tun, aber nur indirekt. Es ist die Syntax:

Code: Alles auswählen

powershell Convert-WindowsImage <Argumente>
führt einfach zu

Code: Alles auswählen

Convert-WindowsImage : Die Benennung "Convert-WindowsImage" wurde nicht als
Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren
Programms erkannt. Überprüfen Sie die Schreibweise des Namens, oder ob der
Pfad korrekt ist (sofern enthalten), und wiederholen Sie den Vorgang.
weil die PowerShell.exe mit Convert-WindowsImage an der Stelle nichts anfangen kann, kennt es nicht, findet es nicht. Wenn man das unbedingt schon so umständlich machen will, dann richtig:

Code: Alles auswählen

powershell -Command "& '<Pfad>\Convert-WindowsImage.ps1' <Argimente>"
Dann wird Convert-WindowsImage.ps1 an der Stelle von der PowerShell ausgeführt.

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

von Holgi » 04.03.2023, 17:00

DK2000 hat geschrieben: 04.03.2023, 16:57 Das hat ja auch damit nichts zu tun. Das sit nur für .ps1 Skripte in der PowerShell relevat.
Verstehe ich jetzt nicht. Hat womit nichts zu tun?
Ich wollte nur, dass @g-force das mal nachvollziehen kann.
Also evtl. besser erst mal nichts ändern, sondern genau so abhandeln. Das muss funktionieren.

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

von DK2000 » 04.03.2023, 16:57

Das hat ja auch damit nichts zu tun. Das sit nur für .ps1 Skripte in der PowerShell relevat.

Problem ist einfach die Syntax. Daher der Fehler

Code: Alles auswählen

Die Benennung "Convert-WindowsImage" wurde nicht als
Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren
Programms erkannt.
Convert-WindowsImage ist kein registriertes Cmdlet, sondern ein Skript. Das müsste dann so aussehen (hoffe ich jedenfalls):

Code: Alles auswählen

powershell -NoLogo -Command "& '.\Convert-WindowsImage.ps1' -SourcePath "%ISO%\%VMNAME%\sources\install.wim" -VHDFormat "VHDX" -Index "1" -SizeBytes 50GB -DiskLayout "UEFI" -VHDPath "%VMPFAD%\%VMNAME%.vhdx" -UnattendPath "%ISO%\%VMNAME%\autounattend.xml"
Kann aber sein, dass da noch Syntaxfehler drin sind. Ist etwas kompliziert, .ps1 über Batch mit Argumenten auszuführen. Und setzt voraus, das Convert-WindowsImage.ps1 im selben Pfad wie die .cmd ist. Ansonsten genauen Pfad eingeben .

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

von Holgi » 04.03.2023, 16:56

Reihenfolge beachtet?
set unrestricted
dotsourcing
es kommt:

Code: Alles auswählen

Sicherheitswarnung
Führen Sie ausschließlich vertrauenswürdige Skripts aus. Skripts aus dem Internet können zwar nützlich sein, stellen
jedoch auch eine potenzielle Gefahr für Ihren Computer dar. Wenn Sie diesem Skript vertrauen, lassen Sie mit dem Cmdlet
 "Unblock-File" die Ausführung des Skripts ohne die Warnmeldung zu. Möchten Sie "C:\ntlite\Convert-WindowsImage.ps1"
ausführen?
[N] Nicht ausführen  [M] Einmal ausführen  [H] Anhalten  [?] Hilfe (Standard ist "N"):
M drücken
dann in Powershell die lange Befehlskette eingeben. Hier mal ein neues Beispiel, wo alle Elemente im gleichen Ordner sind (inkl. des convert-windowsimage.ps1

Code: Alles auswählen

Convert-WindowsImage -SourcePath "$pwd\install.wim" -VHDFormat "VHDX" -Edition "Windows 11 Pro" -SizeBytes 50GB -DiskLayout "UEFI" -VHDPath "$pwd\WIN11_22H2.vhdx" -UnattendPath "$pwd\autounattend.xml"
funktioniert bei mir
sieht dann so aus:

Code: Alles auswählen

Windows(R) Image to Virtual Hard Disk Converter for Windows(R)
Copyright (C) Microsoft Corporation.  All rights reserved.
Copyright (C) 2019 x0nn
Version 10.0.14278.1000.amd64fre.rs1_es_media.160201-1707

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

von g-force » 04.03.2023, 16:45

Code: Alles auswählen

Windows PowerShell
Copyright (C) Microsoft Corporation. Alle Rechte vorbehalten.

Lernen Sie das neue plattformübergreifende PowerShell kennen – https://aka.ms/pscore6

PS C:\WINDOWS\system32> set-executionpolicy unrestricted -force -scope CurrentUser
PS C:\WINDOWS\system32> get-executionpolicy
Unrestricted
PS C:\WINDOWS\system32>
Trotzdem erscheint der Fehler weiterhin.

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

von Holgi » 04.03.2023, 16:33

bei mir hat das hier geholfen:

Code: Alles auswählen

set-executionpolicy unrestricted -force -scope CurrentUser

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

von DK2000 » 04.03.2023, 16:23

Das ist ziemlich unsauber. Sollte so aussehen:

Code: Alles auswählen

powershell -ExecutionPolicy Unrestricted -NoLogo -Command "Get-Date"
Wobei man den Teil mit den Schaltern auch in eine Variable packen kann.

Code: Alles auswählen

set switches=-ExecutionPolicy Unrestricted -NoLogo -Command
Dann braucht man das nicht immer zu wiederholen.

Code: Alles auswählen

powershell %switches% "Get-Date"
Wobei das generell ziemlich Quark ist, jedes Cmdlet einzeln auszuführen.

Nach oben