参数 -MemoryStartupBytes 通过变量

Argument -MemoryStartupBytes via variable

大家晚上好,

我需要有关 Powershell 中一个简单变量的帮助。我正在尝试通过 Powershell 在 Hyper-V 中自动创建 VM。

我试图通过 Read-Host 提示 RAM GB 的数量,但我一直收到相同的错误。

$ram = Read-Host -Prompt "Ram to use"
New-VM -Name $vm -MemoryStartupBytes $ram -BootDevice VHD -NewVHDPath C:\HyperV\Virtualmachines$vm.vhdx -Path C:\HyperV\Virtualmachines -NewVHDSizeBytes $disc1 -Generation 2 -Switch Data
New-VHD -Path C:\HyperV\virtualmachines\"$vm"_2.vhdx -SizeBytes 40GB -Dynamic

这是我收到的错误。

其中两个,一个来自字节,另一个是正确的格式

New-VHD : Cannot bind parameter 'SizeBytes'. Cannot convert value "[60GB]" to type "System.UInt64". Error: "Input string was not in a correct format."

The minimum amount of memory you can assign to this virtual machine is '32' MB.

我不明白为什么不能使用 GB 如果将自己的数量放入正确的 powershell 中工作正常但如果我写入变量不起作用

用户可以在 Read-Host..
中输入任何内容 要去除绒毛,请执行类似

的操作
$ram = Read-Host -Prompt "Ram to use (GB)"
$ram = [uint64]($ram -replace '\D') * 1GB  # now you have the value as UInt64