使用 Azure PowerShell 以交互方式创建 Azure 资源
在交互模式下,PowerShell 允许你立即输入并运行命令。
在客户关系管理 (CRM) 示例中,目标是创建三个包含虚拟机 (VM) 的测试环境。 使用资源组来确保将 VM 组织到不同的环境中:
- 单元测试
- 集成测试
- 验收测试
由于只需创建一次资源组,因此为此任务交互式地使用 PowerShell 是一个合理的选择。
在 PowerShell 中运行命令时,会将命令与 cmdlet 匹配,然后执行请求的操作。
示例:如何使用 Azure PowerShell 创建资源组
让我们执行一个常见任务:创建资源组。 资源组可帮助你共同管理相关资源,创建新的资源组通常是启动新 Azure 解决方案时执行的首要任务之一。
下面是需要执行的三个步骤:
连接到 Azure 订阅。
创建资源组。
验证资源组是否已成功创建。
每个步骤对应不同的 Azure PowerShell 命令。
连接到 Azure
使用 Azure PowerShell 的本地安装时,在执行任何 Azure PowerShell 命令之前,必须进行身份验证。 Connect-AzAccount
cmdlet 会提示输入 Azure 凭据,然后连接到 Azure 订阅。
若要以交互方式连接,无需指定任何参数:
Connect-AzAccount
此命令将打开输入 Azure 凭据的提示,并建立与 Azure 订阅的连接。
使用订阅
如果你是 Azure 的新手,则只有一个订阅。 但是,如果你已使用 Azure 一段时间,则可能会有多个订阅。 Azure PowerShell 允许配置要对其执行命令的订阅。
每次只能在一个订阅中操作。 使用 Get-AzContext
cmdlet 确定哪个订阅当前处于活动状态。 如果不正确,可以使用 Set-AzContext
cmdlet 切换订阅。
获取所有订阅的列表:
Get-AzSubscription
查看已登录的当前订阅:
Get-AzContext
更改活动订阅:
Set-AzContext -Subscription '00000000-0000-0000-0000-000000000000'
如果需要查找订阅 ID,可以在
Get-AzSubscription
cmdlet 的输出中找到它。
创建资源组
在 Azure 中创建资源时,将这些资源放入资源组,以便于管理。
若要创建资源组,请使用 New-AzResourceGroup
cmdlet。 必须指定名称和位置,并且名称在订阅中必须唯一。 该位置决定资源组元数据的存储位置(出于符合性原因,这可能很重要)。 使用 Get-AzLocation
cmdlet 确定可用的位置。
注意
如果在 Azure 沙盒中工作,则会为你创建资源组。 如果更喜欢在自己的订阅中工作,请使用以下命令。
用于创建资源组的语法是:
New-AzResourceGroup -Name <resource-group-name> -Location <location>
列出所有资源组
若要检索包含有效订阅中所有资源组的列表,请使用 Get-AzResourceGroup
cmdlet。
Get-AzResourceGroup
有关更简洁的视图,可以通过管道将输出传递给 Format-Table
cmdlet:
Get-AzResourceGroup | Format-Table
也可以筛选输出结果以仅显示特定的资源组:
Get-AzResourceGroup -Name <resource-group-name>
创建一个 Azure 虚拟机
创建虚拟机 (VM) 是可以使用 Azure PowerShell 执行的常见任务。
New-AzVM
cmdlet 用于创建 VM。 此 cmdlet 具有多个参数,用于处理 VM 的广泛配置设置。 大多数参数都有合理的默认值,因此我们通常只需要指定五个关键项:
- ResourceGroupName:放置了新 VM 的资源组。
- 名称:Azure 中 VM 的名称。
- 位置:预配了 VM 的地理区域。
- 凭证:包含 VM 管理员帐户的用户名和密码的对象。
使用
Get-Credential
cmdlet 来提示输入用户名和密码并将其存储为凭据对象。 - 图像:用于 VM 的操作系统映像,通常是 Linux 发行版或 Windows Server。
下面是一个示例:
$azVmParams = @{
ResourceGroupName = '<resource-group-name>'
Name = '<machine-name>'
Credential = '<credentials-object>'
Location = '<location>'
Image = '<image-name>'
}
New-AzVM @azVmParams
可以通过展开 New-AzVM
cmdlet 将这些参数作为哈希表提供,如前面的示例所示。 或者,可以直接向 New-AzVM
cmdlet 提供参数,或使用其他 cmdlet 配置虚拟机,例如 Set-AzVMOperatingSystem
、Set-AzVMSourceImage
、Add-AzVMNetworkInterface
和 Set-AzVMOSDisk
。
例如,若要直接向 New-AzVM
cmdlet 提供参数,请使用以下语法:
New-AzVM -Name <vm-name> -ResourceGroupName <resource-group-name> -Credential (Get-Credential) ...
示例:获取 VM 的信息
可使用 Get-AzVM
命令列出订阅中的 VM。 此命令还支持通过指定 Name 参数来检索特定 VM。
将 Get-AzVM
的结果存储在变量中:
$vm = Get-AzVM -Name <vm-name> -ResourceGroupName <resource-group-name>
$vm
变量的内容是可以与之交互的对象。 例如,可以对此对象进行更改,然后使用 Update-AzVM
命令将更改推送到 Azure:
$resourceGroupName = '<resource-group-name>'
$vm = Get-AzVM -Name <vm-name> -ResourceGroupName $resourceGroupName
$vm.HardwareProfile.vmSize = 'Standard_DS3_v2'
Update-AzVM -ResourceGroupName $resourceGroupName -VM $vm
在交互模式下使用 PowerShell 适用于一次性任务。 例如,如果资源组仅在项目的生存期内创建一次,则可以以交互方式创建和管理这些资源组。 对于仅执行一次的任务来说,使用交互模式通常比编写脚本更快更容易。