Hyper-V VM mit PowerShell erstellen - Fehler im Skript!?
Hallo,
ich möchte mit der Powershell eine Hyper-V VM erstellen. Aber irgendwie spuckt der die ganze Zeit nur Fehler. Vielleicht kann mir einer von euch weiterhelfen und mir sagen was ich Falsch mache
und der / die FGehler
OutOfMemory kann es definitiv nicht sein:
ich möchte mit der Powershell eine Hyper-V VM erstellen. Aber irgendwie spuckt der die ganze Zeit nur Fehler. Vielleicht kann mir einer von euch weiterhelfen und mir sagen was ich Falsch mache
$PSVersionTable
Name Value
---- -----
PSVersion 7.3.2
PSEdition Core
GitCommitId 7.3.2
OS Microsoft Windows 10.0.20348
Platform Win32NT
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
WSManStackVersion 3.0
# Konfigurationsvariablen abfragen
$VMName = Read-Host "Gib den Namen der virtuellen Maschine ein"
$MemoryGBStartup = Read-Host "Gib die Start-RAM-Größe (in GB) der virtuellen Maschine ein"
$MemoryGBMinimum = Read-Host "Gib die minimale RAM-Größe (in GB) der virtuellen Maschine ein"
$MemoryGBMaximum = Read-Host "Gib die maximale RAM-Größe (in GB) der virtuellen Maschine ein"
$NumCores = Read-Host "Gib die Anzahl der vCPUs der virtuellen Maschine ein"
$IsoPath = "C:\ISO\debian-11.6.0-amd64-netinst.iso"
$VHDSize = 200GB
$SwitchName = "VSwitch_extern"
$ConfigPath = "C:\Hyper-V\Config\"
$VHDPath = "D:\Hyper-V\Data\$VMName.vhdx"
# Umwandlung von GB in Byte
$MemoryBytesStartup = $MemoryGBStartup * 1024 * 1024 * 1024
$MemoryBytesMinimum = $MemoryGBMinimum * 1024 * 1024 * 1024
$MemoryBytesMaximum = $MemoryGBMaximum * 1024 * 1024 * 1024
# VM erstellen
New-VM -Name $VMName -Path $ConfigPath -MemoryStartupBytes $MemoryBytesStartup -MemoryMinimumBytes $MemoryBytesMinimum -MemoryMaximumBytes $MemoryBytesMaximum -SwitchName $SwitchName -Generation 2 -BootDevice VHD -VHDPath $VHDPath -VHDSizeBytes $VHDSize -NumaNodes 0 -CpuCount $NumCores -DynamicMemoryEnabled $true
# ISO hinzufügen
Add-VMDvdDrive -VMName $VMName -Path $IsoPath
# VM starten
Start-VM -Name $VMName
und der / die FGehler
Gib den Namen der virtuellen Maschine ein: DOCKER01
Gib die Start-RAM-Größe (in GB) der virtuellen Maschine ein: 4
Gib die minimale RAM-Größe (in GB) der virtuellen Maschine ein: 2
Gib die maximale RAM-Größe (in GB) der virtuellen Maschine ein: 8
Gib die Anzahl der vCPUs der virtuellen Maschine ein: 4
OperationStopped: C:\Scripts\Backup\VMerstellen.ps1:15:1
Line |
15 | $MemoryBytesStartup = $MemoryGBStartup * 1024 * 1024 * 1024
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Exception of type 'System.OutOfMemoryException' was thrown.
OperationStopped: C:\Scripts\Backup\VMerstellen.ps1:16:1
Line |
16 | $MemoryBytesMinimum = $MemoryGBMinimum * 1024 * 1024 * 1024
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Exception of type 'System.OutOfMemoryException' was thrown.
OperationStopped: C:\Scripts\Backup\VMerstellen.ps1:17:1
Line |
17 | $MemoryBytesMaximum = $MemoryGBMaximum * 1024 * 1024 * 1024
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Exception of type 'System.OutOfMemoryException' was thrown.
New-VM: C:\Scripts\Backup\VMerstellen.ps1:20:60
Line |
20 | … ame -Path $ConfigPath -MemoryStartupBytes $MemoryBytesStartup -Memory …
| ~~~~~~~~~~~~~~~~~~~
| Cannot validate argument on parameter 'MemoryStartupBytes'. The argument is null. Provide a valid value for the argument, and then try running the command again.
Add-VMDvdDrive: C:\Scripts\Backup\VMerstellen.ps1:23:1
Line |
23 | Add-VMDvdDrive -VMName $VMName -Path $IsoPath
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Von Hyper-V wurde kein virtueller Computer mit dem Namen "DOCKER01" gefunden.
Start-VM: C:\Scripts\Backup\VMerstellen.ps1:26:1
Line |
26 | Start-VM -Name $VMName
| ~~~~~~~~~~~~~~~~~~~~~~
| Von Hyper-V wurde kein virtueller Computer mit dem Namen "DOCKER01" gefunden.
OutOfMemory kann es definitiv nicht sein:
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 5980684891
Url: https://administrator.de/forum/hyper-v-vm-mit-powershell-erstellen-fehler-im-skript-5980684891.html
Ausgedruckt am: 05.04.2025 um 19:04 Uhr
5 Kommentare
Neuester Kommentar
Moin,
doch, die Rede ist vom zugewiesenen Konsolenspeicher, der scheint vollgelaufen zu sein
BTW, die Umwandlung in GB geht mit Powershell auch simpel:
Gruß Thomas
doch, die Rede ist vom zugewiesenen Konsolenspeicher, der scheint vollgelaufen zu sein
# Konsolenspeicher anzeigen
Get-Item wsman:\localhost\shell\maxmemoryperShellMB
# Konsolenspeicher auf 2048MiB setzen
Set-Item wsman:\localhost\shell\maxmemoryperShellMB 2048
BTW, die Umwandlung in GB geht mit Powershell auch simpel:
# Umwandlung von GB in Byte
$MemoryBytesStartup = $MemoryGBStartup * 1GB
Gruß Thomas
Moin,
zu den Anmerkungen von Kollege @TK1987 solltest du auch mit Types bei den Variablen arbeiten.
Somit sollten alle Fehler nach und nach verschwinden.
Gruß,
Dani
zu den Anmerkungen von Kollege @TK1987 solltest du auch mit Types bei den Variablen arbeiten.
PS C:\> [int64] $MemoryGBStartup = 2
PS C:\> [int64] $MemoryBytesMinimum = 4 * 1024 * 1024 * 1024
PS C:\> $MemoryBytesMinimum.gettype()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Int64 System.ValueType
Gruß,
Dani
Zitat von @flashback830:
15 | $MemoryBytesStartup = $MemoryGBStartup * 1024 * 1024 * 1024
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Exception of type 'System.OutOfMemoryException' was thrown.
OutOfMemory kann es definitiv nicht sein:
Doch, genau das ist es. Zeichenketten können nur eine gewisse maximale Länge haben.
$MemoryGBStartup hat den Inhalt "4" und ist vom Typ String. Der * Operator macht nun 1024*1024*1024 Wiederholungen der Zeichenkette und versucht diese zu speichern, was fehl schlägt (OutOfMemoryException).
Besser wäre es, die Variablen vorher passend zu deklarieren oder eine Typumwandlung vorzunehmen.
Zitat von @flashback830:
New-VM: C:\Scripts\Backup\VMerstellen.ps1:20:80Line |
20 | … h -MemoryStartupBytes $MemoryBytesStartup -MemoryMinimumBytes $Memory …
| ~~~~~~~~~~~~~~~~~~~
| A parameter cannot be found that matches parameter name 'MemoryMinimumBytes'.
Wie man der Dokumentation zu New-VM entnehmen kann, gibt es keinen solchen Parameter.