问题

PowerShell V2创建UEFI VM

  • 2021年10月26日
  • 7个答复
  • 264意见

徽章 +1

您好,我正在尝试创建一个将使用UEFI并使用新的PowerShell CMDLET的VM。使用版本1 cmdlet,这是不可能的。有谁知道V2是否可以使用,还是我们仍然需要与PowerShell CMDLET一起使用API​​?


7个答复

徽章

是的,您应该能够在v2 cmdlet中这样做。您将要先创建一个引导配置。

这是示例引导配置:

$ boot = new-nutanixObject bootconfig
$ boot.uefi_boot = $ true
$ boot.secure_boot = $ true
$ boot.boot_device_type ='disk'
$ boot.disk_address = $ diskaddress

然后将该引导配置应用于VM。

new -vm -name testboot -numvcpus 2 -memorymb 8000 -clusteruuid -bootConfig $ boot

徽章 +1

谢谢。这是一个很好的开始。

我正在尝试从图像中添加磁盘。根据VM的目的,我可能有来自图像的多个磁盘。我过去所做的是:

$ base ='server_2019_uefi'

开关($ vmtype)
{
'iis'{$ vmdisks = $ base,'iisdata','iislogs'}
'sql'{$ vmdisks = $ base,'sql-2017'}
'vm'{$ vmdisks = $ base}
}

$ vmdisk = new -ntnxObject -name vmdiskdto
$ diskclonespec = new -ntnxObject -name vmdiskspecclonedto
if($ vmdisks.count -gt'1'){
$ diskimage =(get-ntnximage | where-object {$ _。名称-eq $ vmdisks [0]})
}
别的
{
$ diskimage =(get-ntnximage | where-object {$_。Names-eq $ vmdisks})
}
$ diskclonespec.vmdiskuuid = $ diskimage.vmdiskid
$ vmdisk.vmdiskclone = $ diskclonespec

if($ vmdisks.count -gt'1'){

$ vmdisk = @($ vmdisk)
foreach($ vmdisks中的$ disk){
如果($ disk -ne $ vmdisks [0]){
$ addvmdisk = new -ntnxObject -name vmdiskdto
$ adddiskclonespec = new -ntnxObject -name vmdiskspecclonedto
美元
$ adddiskclonespec.vmdiskuuid = $ adddiskimage.vmdiskid
$ addvmdisk.vmdiskclone = $ adddiskclonespec
$ vmdisk += $ addvmdisk
}
}
}
$ vmisodisk = new -ntnxObject -name vmdiskdto
$ vmisodisk.iscdrom = $ true
$ vmisodisk.isempty = $ true

所以现在我想我需要使用:

$ vmdisk = new -nutanixObject -name vmdisk

然后在存储库中的图像中添加$ vmdisk.vm_disk_clone属性?

徽章

正确的。要克隆,您需要先获取VM磁盘UUID。您可能已经很方便了。如果您不这样做,可以通过获得图像的uuid首先“ get-image”来抓住它。拥有图像后,UUID获得了“ get -image -imageId includeVmdiskId”的VM磁盘UUID。VM磁盘映像将在vm_disk_id上列出。

从那里克隆的是海峡前进。

  1. 创建VMDiskAddress

$ clonediskAddress = new-nutanixObject vmdiskaddress

$ clonediskaffress.vmdisk_uuid =’

  1. 创建VMDiskSpecclone

$ vmdiskclone = new-nutanixObject vmdiskspecclone

$ vmdiskclone.disk_address = $ clonediskAddress

  1. 创建VMDISK对象

$ vmdisk = new-nutanixObject vmdisk

$ vmdisk.is_cdrom = $ false

$ vmdisk.vm_disk_clone = $ vmdiskclone

只是在您不想克隆的情况下也将其扔到那里。要创建净新磁盘,您将需要存储容器UUID。您可以使用“ Get-StorageContainer |convertto -json -Depth 6'。

  1. 创建VMDiskCreate规格

$ vmdiskcreate = new-nutanixObject vmdiskspeccreate

$ vmdiskcreate.storage_container_uuid ='

$ vmdiskcreate.size ='800000'

  1. 创建VMDisk

$ vmdisk = new-nutanixObject vmdisk

$ vmdisk.is_cdrom = $ false

$ vmdisk.disk_address = $ diskaddress

$ vmdisk.vm_disk_create = $ vmdiskcreate

徽章 +1

再次感谢您的帮助。非常感谢。

我注意到了2件事,以防万一有人来到这里。首先有一个错字

$ clonediskaffress.vmdisk_uuid =’

它应该是

$ clonediskAddress.vmdisk_uuid =’

没什么大不了。

其次,没有带有new-nutanixObject的类型VMDiskSpecclone。根据帮助,只有:

可用的对象名称为vmdiskaddress,bootconfig,vmdiskspeccreate,vmdisk,vmnicspec。

当我尝试使用它时,我会遇到一个错误,说它不在字典中。

我正在使用模块的2.01版。有新版本吗?

get-module nutanix.prism.ps.cmds


模块型版本预发行名称
----------------------------------------------
脚本2.0.1 nutanix.prism.ps.cmds

徽章

打错了!

2.0.1模块将与new-NutanixObject VMDiskSpecclone一起使用

已安装的模块:

ps> get安装模块

版本名称存储库描述--------------------------------------------------------

2.0.1 nutanix.cli psgallery nutanix powershell命令

2.0.1 nutanix.prism.common psgallery nutanix prism公共模块

2.0.1 nutanix.prism.ps.cmds psgallery nutanix prism powershell命令模块

输出样本:

ps> $ vmdiskclone = new-nutanixObject vmdiskspecclone

PS> $ vmdiskclone:

disk_address:

:mage_path:

ndfs_filepath:

minumum_size:

minumum_size_mb:

snapshot_group_id。:

container_uuid:

徽章 +1

是的。这很敏感。没有意识到。

再次感谢您的所有帮助。

徽章

没问题!

回复


Learn more about our cookies.<\/a>","cookiepolicy.button":"Accept cookies","cookiepolicy.button.deny":"Deny all","cookiepolicy.link":"Cookie settings","cookiepolicy.modal.title":"Cookie settings","cookiepolicy.modal.content":"We use 3 different kinds of cookies. You can choose which cookies you want to accept. We need basic cookies to make this site work, therefore these are the minimum you can select. Learn more about our cookies.<\/a>","cookiepolicy.modal.level1":"Basic
Functional","cookiepolicy.modal.level2":"Normal
Functional + analytics","cookiepolicy.modal.level3":"Complete
Functional + analytics + social media + embedded videos"}}}">
Baidu