有没有办法使用Azure SDK创建第2代虚拟机?

有没有办法使用Azure SDK创建第2代虚拟机?,azure,Azure,Azure通过第2代虚拟机支持UEFI 我可以使用Azure web控制台创建Generation2虚拟机,但无法通过Azure SDK指定虚拟机的生成方式 我在Microsoft文档中找到了使用PowerCLI创建管理磁盘的链接 我查阅了Azure ComputeClient#虚拟机#创建或更新()api的在线文档。但是在python代码文档中仍然找不到任何方法来指定虚拟机的HyperVGenerations。是。这有点违反直觉,但它是这样的:您需要指定磁盘上的VM生成;那么,用这个磁盘创建

Azure通过第2代虚拟机支持UEFI

我可以使用Azure web控制台创建Generation2虚拟机,但无法通过Azure SDK指定虚拟机的生成方式

我在Microsoft文档中找到了使用PowerCLI创建管理磁盘的链接


我查阅了Azure ComputeClient#虚拟机#创建或更新()api的在线文档。但是在python代码文档中仍然找不到任何方法来指定虚拟机的HyperVGenerations。

是。这有点违反直觉,但它是这样的:您需要指定磁盘上的VM生成;那么,用这个磁盘创建的虚拟机将是同一代

如果您已经拥有gen2磁盘,那么您只需在创建VM时选择并指定它即可。但是,我必须从VHD文件创建磁盘。因此,在创建磁盘时,需要一个
IWithCreate
实例,然后使用HypervGeneration方法链接对
的调用。像这样(C#):

公共异步任务MakeDisk(字符串路径)
{
return wait Azure.Disks.Define(名称)
.WithRegion(Region.EuropeWest)
.使用现有资源组(“我的资源”)
.WithWindowsFromVhd(vhdPath)
.使用存储帐户(“saname”)

.WithHyperVGeneration(HyperVGeneration.V2)/是的。这有点违反直觉,但它是这样的:您需要在磁盘上指定VM生成;然后在此磁盘上创建的VM将属于同一代

如果您已经有gen2的磁盘,那么您只需在创建VM时选择它并指定它。但是,我必须从VHD文件创建磁盘。因此,当您创建磁盘时,您需要一个
IWithCreate
实例,然后通过HypervGeneration
方法链接调用
。如下(C#):

公共异步任务MakeDisk(字符串路径)
{
return wait Azure.Disks.Define(名称)
.WithRegion(Region.EuropeWest)
.使用现有资源组(“我的资源”)
.WithWindowsFromVhd(vhdPath)
.使用存储帐户(“saname”)

.WithHyperVGeneration(HyperVGeneration.V2)//谢谢。这很有效。我使用Python SDK验证了这一点。谢谢。这很有效。我使用Python SDK验证了这一点
    public async Task<IDisk> MakeDisk(string vhdPath)
    {
        return await Azure.Disks.Define(name)
            .WithRegion(Region.EuropeWest)
            .WithExistingResourceGroup("my-resources")
            .WithWindowsFromVhd(vhdPath)
            .WithStorageAccount("saname")
            .WithHyperVGeneration(HyperVGeneration.V2) // <--- This is how you specify the generation
            .WithSku(DiskSkuTypes.PremiumLRS)                
            .CreateAsync();
    }
            var osDisk = await MakeDisk("template.vhd");

            var vm = await Azure.VirtualMachines.Define("template-vm")
                .WithRegion(Region.EuropWest)
                .WithExistingResourceGroup("the-rg")
                .WithExistingPrimaryNetworkInterface("some-nic")
                .WithSpecializedOSDisk(osDisk, OperatingSystemTypes.Windows) // <-- Pay attention
                .WithSize(VirtualMachineSizeTypes.StandardB2s)
                .CreateAsync();