问题

PowerShell V2创建UEFI VM

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

徽章 +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

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

再次感谢您的所有帮助。

徽章

没问题!

回复


Baidu