如何使用PowerShell在Azure上配置VM

如何使用PowerShell在Azure上配置VM,powershell,azure,azure-virtual-machine,Powershell,Azure,Azure Virtual Machine,我有一段PowerShell代码(如下所示),它将命令管道化,以便使用现有磁盘创建新的VM。我遇到的问题是,代码是一个通用函数,我不知道需要向VM添加多少数据磁盘,这使得很难将这些数据磁盘通过管道传输到一起 我尝试过使用-inputobject,但这似乎不适用于新的AzureVM命令,任何想法都值得赞赏,因为我需要在VM启动之前连接数据磁盘 谢谢,Richard function Build_Existing_VM($serviceName, $osDisk, $dataDisks, $avai

我有一段PowerShell代码(如下所示),它将命令管道化,以便使用现有磁盘创建新的VM。我遇到的问题是,代码是一个通用函数,我不知道需要向VM添加多少数据磁盘,这使得很难将这些数据磁盘通过管道传输到一起

我尝试过使用-inputobject,但这似乎不适用于新的AzureVM命令,任何想法都值得赞赏,因为我需要在VM启动之前连接数据磁盘

谢谢,Richard

function Build_Existing_VM($serviceName, $osDisk, $dataDisks, $availabilitySetName, $subnetName)
{
   $vmConfig = New-AzureVMConfig -Name $serviceName `
                   -InstanceSize Medium `
                   -DiskName $osDisk `
                   -AvailabilitySetName $availabilitySetName `
                   -HostCaching "ReadOnly" |
                   Add-AzureEndpoint -Name "rdp" -PublicPort 63000 -LocalPort 3389 -Protocol tcp |
                   Add-AzureEndpoint -Name "web" -PublicPort 80    -LocalPort 6080 -Protocol tcp |
                   Set-AzureSubnet $subnetName
   $i = 0
   foreach ($dd in $dataDisks.Split(','))
   {
      $vmConfig = (Add-AzureDataDisk -Import -LUN $i -DiskName $dd -inputobject $vmConfig)
      $i++
  }
   New-AzureVM -ServiceName $serviceName -VNetName $virtualNetworkName -inputobject $vmConfig

}

不确定-inputobject,但。。。如果要在同一个服务名称中有多个虚拟机,则需要参数化公共RDP端口号。您已经将其设置为创建非负载平衡端点,这很好。您可能需要将-LBSetName添加到“Web”端点;否则也会被转发。大卫,谢谢你的评论。目前,这些服务只有一个VM,但一旦我解决了如何添加数据磁盘的问题,我将考虑解决负载平衡问题。只是目前还不确定如何使用PowerShell管道添加数量可变的数据磁盘。