首页 > 其他分享 >powercli脚本根据模版批量创建虚拟机

powercli脚本根据模版批量创建虚拟机

时间:2023-08-09 17:00:57浏览次数:35  
标签:Mandatory Name true vmData 虚拟机 powercli VM 模版 Parameter

cat VM.csv 
Name,Template,PhysicalHost,Datastore,Networkmgt,Networkpro,IPV4mgt,Cpu,Memory,DISK,Usage,cdir
p1_caiwu_web001,win2016,10.18.44.13,NAS03,P1_MGT_9,P1_PRO_c1_1109,10.10.124.130,6,32,350,Safe-app,caiwuchu
function ConnectToVCenter {
    param(
        [Parameter(Mandatory=$true)]
        [string]$server,
        [Parameter(Mandatory=$true)]
        [string]$user,
        [Parameter(Mandatory=$true)]
        [string]$password
    )
    try {
        Connect-VIServer -Protocol https -User $user -Password $password -Server $server
    } catch {
        Write-Error "Failed to connect to vCenter: $_"
        exit 1
    }
}

function CreateVM {
    param(
        [Parameter(Mandatory=$true)]
        [PSCustomObject]$vmData
    )
    try {
        New-VM -Name $vmData.Name -Template $vmData.Template -VMHost $vmData.PhysicalHost -NetworkName $vmData.Networkmgt ,$vmData.Networkpro  -Datastore $vmData.Datastore -RunAsync -Location $vmData.cdir
    } catch {
        Write-Error "Failed to create VM: $_"
    }
}

function WaitForVMCreation {
    param(
        [Parameter(Mandatory=$true)]
        [string]$vmName
    )
    $num = 0
    while($num -le 5){ 
        Start-Sleep -s 10
        if (Get-VM -Name $vmName 2> /dev/null | Where-Object {$_.Name -eq $vmName}) {
            "$vmName 创建成功"
            $num = 6
        } else {
            $num = 0
        }
    }
}

function ConfigureVM {
    param(
        [Parameter(Mandatory=$true)]
        [PSCustomObject]$vmData
    )
    try {
        Get-VM -Name $vmData.Name | Set-VM  -NumCPU $vmData.Cpu -MemoryGB $vmData.Memory  -Notes $vmData.Usage -Confirm:$false
        Start-Sleep -s 5
        if ($vmData.DISK -gt 0) {
            Get-VM -Name $vmData.Name  | New-HardDisk -CapacityGB $vmData.DISK -Persistence persistent -StorageFormat Thin
        }
        Start-Sleep -s 10
        Get-VM $vmData.Name | Start-VM
    } catch {
        Write-Error "Failed to configure VM: $_"
    }
}

# Main script starts here
$file = $args[0]
if ( $file -gt 0 ) {echo $file;} else {echo '请添加参数文件[ eg:pwsh pwshtest.ps1 VM.csv ]';exit;} 

$vms = Import-CSV $file

#连接vCenter 
ConnectToVCenter -server '110.118.24.115' -user '[email protected]' -password 'Sckl#2023!'

#创建新虚拟机
foreach ($vm in $vms){
    CreateVM -vmData $vm
}

"等待虚机完成!"
#判断虚拟机是否创建完成
foreach ($vm in $vms){
    WaitForVMCreation -vmName $vm.Name
}

"所有虚机创建完成,开始调整资源配置,并启动!"
#配置新虚拟机并开机
foreach ($vm in $vms){
    ConfigureVM -vmData $vm
}

标签:Mandatory,Name,true,vmData,虚拟机,powercli,VM,模版,Parameter
From: https://blog.51cto.com/first01/7022848

相关文章

  • CentOS虚拟机断电或强制关机,再开机出现问题
    原作者地址:linux开机错误Enteringemergencymode.Exittheshelltocontinue._whatday的博客-CSDN博客虽然没怎么看懂,但是解决了,原作者牛逼CentOS虚拟机断电或强制关机,再开机出现问题:   找出问题出现在哪:这里的journalctl是查看系统的日志信息;直接输入此命令查看......
  • 性能强劲的虚拟机—VMware Fusion 13 mac
    VMwareFusionPro13(VM虚拟机)中文Mac版是一款性能强劲的虚拟机,可以帮助您快速搭建与运行Windows应用程序。在这里,您可以享受所有支持Windows10的新特性和功能。FusionPro13具有卓越的性能、可扩展性、灵活性和多功能性,为您带来卓越的体验和更强大的功能。→→↓↓载VMware......
  • FinalShell有时突然无法连接虚拟机的相关原因和解决方法
    问题描述关闭虚拟机和FinalShell远程工具突然显示连接超时,再没有动别的东西的情况下,没有办法连接上虚拟机问题解决经过查阅相关资料发现:VMWare虚拟机的IP地址时常变化,出现连接不上的情况也是属于正常情况,解决方法如下:1、打开虚拟机,查看IP地址ifconfig2、找到公网地址IP,更......
  • VMware虚拟机添加新硬盘以及对磁盘进行分区挂载
    有时候我们需要在VMware中添加新的虚拟磁盘。比如原来已经有sda盘,现在我们需要新的空白sdb盘。方法如下:VMware新增磁盘的设置步骤(建议:在设置虚拟的时候,不要运行虚拟机的系统,不然添加了新的虚拟磁盘则要重启虚拟机)1、选择“VM”—-“设置”并打开,将光标定位在硬盘这一选项,然后......
  • web开发----jsp中通用模版的引用 include的用法
    web开发中常常会有一些代码需要多个页面使用,比如banner nav导航 还有footer等.ASP.NET开发中有母版页的说法,也就是写一些通用的模版页,然后其他页面可以引用。 jsp中 当然也有这样的用法 也就是include的用法 两种用法一种是说明标签<%@include file="xxx.jsp"%>,......
  • 虚拟机 的net模式与 桥接模式, windows可以ping通 虚拟机,但是虚拟机无法ping通 windows
    1第一个问题,net与桥接的模式。    2第二个问题,虚拟机ping不通PC,但是PC可以ping通虚拟机。  ......
  • liunx虚拟机VMware增加磁盘空间后,挂载磁盘
    问题:当虚拟机扩展磁盘空间后提示“您必须从客户机操作系统内部对磁盘重新进行分区和扩展文件系统"处理方法: 1、切换root用户查看磁盘情况:fdisk-l  2、查看磁盘挂载情况:df-h3、对磁盘进行分区:fdisk/dev/sda 默认为4,后两步回车默认,最后输入w保存;可输入m查看命令提......
  • AMD cpus在VM虚拟机安装macOS10.15和12教程一
    本教程采用软件为vmwareworkstation17pro,操作系统win10,CPU为5600G,macOS10.15或者macOS12VM虚拟机的下载和安装这里不阐述,大家可以百度一下macos13在上述环境下安装后会提示错误,macOS14beta暂时不支持安装,所以13-14可以暂时放弃macOS的下载请百度一下就有了~记得下载带引导......
  • 安装虚拟机
    1、下载vm17prohttps://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=vm17pro&fenlei=256&rsv_pq=0xed24c71a0003c833&rsv_t=a413ycmpC%2BOYJbDMArvm%2FcDuZCP%2FHsJFxns02J4dOXMo5RHuxzHmU%2FcWAqAD&rqlang=en&rsv......
  • cookiecutter python 项目模版工具
    cookiecutterpython项目模版工具,可以帮助我们快速基于模版生成python项目(当然也支持c项目)有不少python项目都是基于此工具的比如dbtadapter开发就基于此提供了方便的adapter生成dbtadapter参考模版 cookiecutter创建项目模版具体可以参考rongfengliang/mynpm-pac......