你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
使用 Azure PowerShell 创建虚拟机
本教程介绍使用 Azure PowerShell 设置虚拟机的过程中涉及到的所有步骤。 本教程还介绍输出查询、Azure 资源重用和资源清理。
可以使用通过 Azure Cloud Shell 提供的交互式体验来完成本教程,也可以在本地安装 Azure PowerShell。
使用 ctrl-shift-v(在 macOS 上则使用 cmd-shift-v)将教程文本粘贴到 Azure Cloud Shell 中。
登录
如果使用 Azure PowerShell 的本地安装,则需要先登录,然后才能执行任何其他步骤。
Connect-AzAccount
请按照终端中显示的步骤操作,完成登录过程。
创建资源组
在 Azure 中,所有资源都分配在资源管理组中。 可以通过资源组对资源进行逻辑分组,以集合的方式更方便地使用资源。
就本教程来说,所有创建的资源都进入一个名为 TutorialResources
的组。
New-AzResourceGroup -Name TutorialResources -Location eastus
ResourceGroupName : TutorialResources
Location : eastus
ProvisioningState : Succeeded
Tags :
ResourceId : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/TutorialResources
获取 VM 的管理员凭据
创建新的虚拟机之前,必须创建一个包含 Windows VM 管理员帐户用户名和密码的凭据对象。
$cred = Get-Credential -Message "Enter a username and password for the virtual machine."
出现提示时输入用户名和密码。 得到的凭据对象将在下一步中作为参数传递。
Windows PowerShell credential request.
Enter a username and password for the virtual machine.
User: tutorAdmin
Password for user tutorAdmin: *********
创建虚拟机
Azure 中的虚拟机有大量的依赖项。 Azure PowerShell 将根据指定的命令行参数创建这些资源。 为了提高可读性,我们使用 PowerShell 展开将参数传递给 Azure PowerShell cmdlet。
创建运行 Windows 的新虚拟机。
$vmParams = @{
ResourceGroupName = 'TutorialResources'
Name = 'TutorialVM1'
Location = 'eastus'
ImageName = 'Win2016Datacenter'
PublicIpAddressName = 'tutorialPublicIp'
Credential = $cred
OpenPorts = 3389
Size = 'Standard_D2s_v3'
}
$newVM1 = New-AzVM @vmParams
创建 VM 时将显示参数值已使用并且 Azure 资源正在创建。 PowerShell 将显示一个进度栏,如下所示。
Creating Azure resources
39% \
[ooooooooooooooooooooooooooooooooooo ]
Creating TutorialVM1 virtual machine.
VM 准备就绪后,我们可以在 Azure 门户中或通过检查 $newVM1
变量来查看结果。
$newVM1
ResourceGroupName : TutorialResources
Id : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/TutorialResources/providers/Microsoft.Compute/virtualMachines/TutorialVM1
VmId : 00000000-0000-0000-0000-000000000000
Name : TutorialVM1
Type : Microsoft.Compute/virtualMachines
Location : eastus
Tags : {}
HardwareProfile : {VmSize}
NetworkProfile : {NetworkInterfaces}
OSProfile : {ComputerName, AdminUsername, WindowsConfiguration, Secrets}
ProvisioningState : Succeeded
StorageProfile : {ImageReference, OsDisk, DataDisks}
在大括号内列出的属性值是嵌套的对象。 在下一步中,我们将演示如何查看这些嵌套对象中的特定值。
通过查询获取 VM 信息
让我们从我们刚刚创建的 VM 中获取一些更详细的信息。 在此示例中,我们将验证我们创建的 VM 的名称和管理员帐户。
$newVM1.OSProfile | Select-Object -Property ComputerName, AdminUserName
ComputerName AdminUsername
------------ -------------
TutorialVM1 tutorialAdmin
可以使用其他 Azure PowerShell 命令来获取有关网络配置的特定信息。
$newVM1 | Get-AzNetworkInterface |
Select-Object -ExpandProperty IpConfigurations |
Select-Object -Property Name, PrivateIpAddress
在此示例中,我们要使用 PowerShell 管道将 $newVM1 对象发送到 Get-AzNetworkInterface
cmdlet。 从得到的网络接口对象中,我们要选择嵌套的 IpConfigurations 对象。 从 Ipconfigurations 对象中,我们要选择 Name 和 PrivateIpAddress 属性。
Name PrivateIpAddress
---- ----------------
TutorialVM1 192.168.1.4
为了确认 VM 正在运行,需要通过远程桌面进行连接。 为此,我们需要知道公共 IP 地址。
$publicIp = Get-AzPublicIpAddress -Name tutorialPublicIp -ResourceGroupName TutorialResources
$publicIp |
Select-Object -Property Name, IpAddress, @{label='FQDN';expression={$_.DnsSettings.Fqdn}}
在此示例中,我们使用 Get-AzPublicIpAddress
并将结果存储在 $publicIp
变量中。 从此变量中,我们将选择属性并使用表达式来检索嵌套的 Fqdn 属性。
Name IpAddress FQDN
---- --------- ----
tutorialPublicIp <PUBLIC_IP_ADDRESS> tutorialvm1-8a0999.eastus.cloudapp.azure.com
从本地计算机可以运行以下命令来通过远程桌面连接到 VM。
mstsc.exe /v $publicIp.IpAddress
有关查询对象属性的详细信息,请参阅查询 Azure 资源。
在现有的子网上创建新的 VM
第二个 VM 使用现有的子网。
$vm2Params = @{
ResourceGroupName = 'TutorialResources'
Name = 'TutorialVM2'
ImageName = 'Win2016Datacenter'
VirtualNetworkName = 'TutorialVM1'
SubnetName = 'TutorialVM1'
PublicIpAddressName = 'tutorialPublicIp2'
Credential = $cred
OpenPorts = 3389
}
$newVM2 = New-AzVM @vm2Params
$newVM2
ResourceGroupName : TutorialResources
Id : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/TutorialResources/providers/Microsoft.Compute/virtualMachines/TutorialVM2
VmId : 00000000-0000-0000-0000-000000000000
Name : TutorialVM2
Type : Microsoft.Compute/virtualMachines
Location : eastus
Tags : {}
HardwareProfile : {VmSize}
NetworkProfile : {NetworkInterfaces}
OSProfile : {ComputerName, AdminUsername, WindowsConfiguration, Secrets}
ProvisioningState : Succeeded
StorageProfile : {ImageReference, OsDisk, DataDisks}
FullyQualifiedDomainName : tutorialvm2-dfa5af.eastus.cloudapp.azure.com
可以跳过几个步骤来获取新 VM 的公共 IP 地址,因为它是在 $newVM2
对象的 FullyQualifiedDomainName 属性中返回的。 使用以下命令通过远程桌面进行连接。
mstsc.exe /v $newVM2.FullyQualifiedDomainName
清理
教程完成以后,即可清理创建的资源。 可以使用 Remove-AzResource
命令删除单个资源,但若要删除资源组中的所有资源,最安全的方式是使用 Remove-AzResourceGroup
命令删除该组。
$job = Remove-AzResourceGroup -Name TutorialResources -Force -AsJob
$job
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------- ----- ----------- -------- -------
1 Long Running... AzureLongRun... Running True localhost Remove-AzResource...
该命令删除本教程中创建的资源,可确保按正确顺序将其解除分配。 在进行删除时,AsJob
参数会解除对 PowerShell 的阻止。 若要等到删除已完成,请使用以下命令:
Wait-Job -Id $job.Id
清理完成以后,本教程即告完成。 接下来是所学内容的摘要,以及在后续步骤中将要用到的资源的链接。
总结
祝贺你! 你已了解如何使用新的或现有的资源来创建 VM,并使用了表达式和其他 Azure PowerShell 命令来捕获要存储在 shell 变量中的数据,还查看了一些为 Azure VM 创建的资源。
下一步做什么取决于你打算如何使用 Azure PowerShell。 若要进一步深入了解本教程中介绍的功能,可以参阅各种资料。
全面的 Azure PowerShell 文档
你可能想要花些时间浏览完整的 Azure PowerShell 文档集。
有关本教程中使用的命令的详细信息,请查看以下文章。
- New-AzResourceGroup
- Get-Credential
- New-AzVM
- Select-Object
- Get-AzPublicIpAddress
- Remove-AzResourceGroup
- Wait-Job
也有文章对本教程中介绍的功能进行了更深入的探讨。
示例脚本
若要立刻开始执行特定的任务,请查看一些示例脚本。
反馈
如果想要提供反馈、建议或提出问题,可以通过多种方式联系我们。
Send-Feedback
是一个内置的 Azure PowerShell 命令,用于向我们的团队提供任意形式的反馈。- 在 Azure PowerShell 存储库中提交功能请求或 Bug 报告。
- 若要提出某个问题或澄清某个问题,请在 Azure PowerShell 文档存储库中提交该问题。
希望你喜欢使用 Azure PowerShell!
你有关于此部分的问题? 如果有,请向我们提供反馈,以便我们对此部分作出改进。