Hyper-V批量创建虚拟机

function ConvertTo-MacAddress {
    param (
        [string]$IPv4Address
    )
    # 按照 "." 分割 IPv4 地址
    $parts = $IPv4Address.Split('.')
    # 转换每个部分为十六进制,并格式化为两位数
    $hexParts = foreach ($part in $parts) {
        "{0:x2}" -f [int]$part
    }
    # 连接每个十六进制部分,并添加一个 0 前缀,使 MAC 地址长度为 12 位
    $macAddress = "0000" + ($hexParts -join '')
    return $macAddress
}
function MyNewVM {
    param (
        [object]$vmItem
    )
#echo $vmItem;return
    New-VHD -Path $vmItem.VhdVMPath -ParentPath $vmItem.VhdParentPath
    New-VM -Name $vmItem.GuestName -Generation $vmItem.Generation -Path $vmItem.osDirBase -MemoryStartupBytes $vmItem.MemoryStartupBytes -VHDPath $vmItem.VhdVMPath -SwitchName $vmItem.SwitchName
    Rename-VMNetworkAdapter -VMName $vmItem.GuestName -NewName "eth0"
    Set-VMNetworkAdapter -VMName $vmItem.GuestName -Name "eth0" -StaticMacAddress $vmItem.StaticMacAddress
    Set-VMMemory -VMName $vmItem.GuestName -DynamicMemoryEnabled 1 -MinimumBytes $vmItem.MemoryMinimumBytes -MaximumBytes $vmItem.MemoryMaximumBytes
    Set-VMProcessor -VMName $vmItem.GuestName -Count $vmItem.ProcessorCount -Maximum $vmItem.ProcessorMaximum
}
$baseDir = "C:\Hyper-V\os";
$osName = "os-ft-20240526";
$vmItem=@{}
$vmItem.Generation = 1;
$vmItem.osDirBase = Join-Path -Path $baseDir -ChildPath $osName
$vmItem.VhdParentPath = $osDir + ".vhdx"
$vmItem.SwitchName = "wan"
$vmItem.MemoryStartupBytes = 512MB#启动内存
$vmItem.MemoryMinimumBytes = 512MB#最低内存
$vmItem.MemoryMaximumBytes = 1GB#最大内存
$vmItem.ProcessorCount = 1#CPU核心数
$vmItem.ProcessorMaximum = 100#CPU限制
$vmItem.StaticMacAddress = "00155D010203"
for ($i=1; $i -le 30; $i++) {
    $vmItem.GuestName = "ft-" + $i
    $IPv4Address = "10.86.71." + $i
    $vmItem.StaticMacAddress = ConvertTo-MacAddress($IPv4Address);
    $vmItem.vmDir = Join-Path -Path $osDirBase -ChildPath $vmItem.GuestName;
    $vmItem.VhdVMPath = Join-Path -Path $vmItem.vmDir -ChildPath ($vmItem.GuestName + ".vhdx")
    MyNewVM($vmItem)
}
posted on 2024-05-27 13:14  项希盛  阅读(40)  评论(0编辑  收藏  举报