快速入门:在 Azure Stack Hub 中使用 PowerShell 创建 Windows Server VM

可以使用 Azure Stack Hub PowerShell 创建 Windows Server 2016 虚拟机 (VM)。 请按照本文中的步骤创建和使用 VM。 本文还提供了执行以下操作的步骤:

  • 通过远程客户端连接到 VM。
  • 安装 IIS Web 服务器并查看默认主页。
  • 清理资源。

注意

可以通过 Azure Stack 开发工具包或基于 Windows 的外部客户端(如果已通过 VPN 建立连接)运行本文中所述的步骤。

Windows Server VM 的先决条件

  • 确保 Azure Stack Hub 操作员已将“Windows Server 2016” 映像添加到 Azure Stack Hub 市场。

  • Azure Stack Hub 需要使用特定版本的 Azure PowerShell 来创建和管理资源。 如果未针对 Azure Stack Hub 配置 PowerShell,请遵循安装 PowerShell 的步骤。

  • 设置 Azure Stack Hub PowerShell 后,将需要连接到 Azure Stack Hub 环境。 有关说明,请参阅以用户身份使用 PowerShell 连接到 Azure Stack Hub

创建资源组

资源组是在其中部署和管理 Azure Stack Hub 资源的逻辑容器。 在开发工具包或 Azure Stack Hub 集成系统中,运行以下代码块创建资源组。

注意

代码示例中为所有变量都分配了值。 但是,如果愿意,也可以分配新值。

# Create variables to store the location and resource group names.
$location = "local"
$ResourceGroupName = "myResourceGroup"

New-AzResourceGroup `
  -Name $ResourceGroupName `
  -Location $location

创建存储资源

创建存储帐户以存储启动诊断的输出。

# Create variables to store the storage account name and the storage account SKU information
$StorageAccountName = "mystorageaccount"
$SkuName = "Standard_LRS"

# Create a new storage account
$StorageAccount = New-AzStorageAccount `
  -Location $location `
  -ResourceGroupName $ResourceGroupName `
  -Type $SkuName `
  -Name $StorageAccountName

Set-AzCurrentStorageAccount `
  -StorageAccountName $storageAccountName `
  -ResourceGroupName $resourceGroupName

创建网络资源

创建虚拟网络、子网和公共 IP 地址。 这些资源用来与 VM 建立网络连接。

# Create a subnet configuration
$subnetConfig = New-AzVirtualNetworkSubnetConfig `
  -Name mySubnet `
  -AddressPrefix 192.168.1.0/24

# Create a virtual network
$vnet = New-AzVirtualNetwork `
  -ResourceGroupName $ResourceGroupName `
  -Location $location `
  -Name MyVnet `
  -AddressPrefix 192.168.0.0/16 `
  -Subnet $subnetConfig

# Create a public IP address and specify a DNS name
$pip = New-AzPublicIpAddress `
  -ResourceGroupName $ResourceGroupName `
  -Location $location `
  -AllocationMethod Static `
  -IdleTimeoutInMinutes 4 `
  -Name "mypublicdns$(Get-Random)"

创建网络安全组和网络安全组规则

网络安全组使用入站和出站规则来保护 VM。 让我们创建端口 3389 的入站规则以允许传入的远程桌面连接,并创建端口 80 的入站规则以允许传入的 Web 流量。

# Create an inbound network security group rule for port 3389
$nsgRuleRDP = New-AzNetworkSecurityRuleConfig `
  -Name myNetworkSecurityGroupRuleRDP `
  -Protocol Tcp `
  -Direction Inbound `
  -Priority 1000 `
  -SourceAddressPrefix * `
  -SourcePortRange * `
  -DestinationAddressPrefix * `
  -DestinationPortRange 3389 `
  -Access Allow

# Create an inbound network security group rule for port 80
$nsgRuleWeb = New-AzNetworkSecurityRuleConfig `
  -Name myNetworkSecurityGroupRuleWWW `
  -Protocol Tcp `
  -Direction Inbound `
  -Priority 1001 `
  -SourceAddressPrefix * `
  -SourcePortRange * `
  -DestinationAddressPrefix * `
  -DestinationPortRange 80 `
  -Access Allow

# Create a network security group
$nsg = New-AzNetworkSecurityGroup `
  -ResourceGroupName $ResourceGroupName `
  -Location $location `
  -Name myNetworkSecurityGroup `
  -SecurityRules $nsgRuleRDP,$nsgRuleWeb

为 VM 创建网卡

网卡将 VM 连接到子网、网络安全组和公共 IP 地址。

# Create a virtual network card and associate it with public IP address and NSG
$nic = New-AzNetworkInterface `
  -Name myNic `
  -ResourceGroupName $ResourceGroupName `
  -Location $location `
  -SubnetId $vnet.Subnets[0].Id `
  -PublicIpAddressId $pip.Id `
  -NetworkSecurityGroupId $nsg.Id

创建 VM

创建 VM 配置。 此配置包括部署 VM 时使用的设置。 例如:凭据、大小和 VM 映像。

# Define a credential object to store the username and password for the VM
$UserName='demouser'
$Password='Password@123'| ConvertTo-SecureString -Force -AsPlainText
$Credential=New-Object PSCredential($UserName,$Password)

# Create the VM configuration object
$VmName = "VirtualMachinelatest"
$VmSize = "Standard_A1"
$VirtualMachine = New-AzVMConfig `
  -VMName $VmName `
  -VMSize $VmSize

$VirtualMachine = Set-AzVMOperatingSystem `
  -VM $VirtualMachine `
  -Windows `
  -ComputerName "MainComputer" `
  -Credential $Credential -ProvisionVMAgent

$VirtualMachine = Set-AzVMSourceImage `
  -VM $VirtualMachine `
  -PublisherName "MicrosoftWindowsServer" `
  -Offer "WindowsServer" `
  -Skus "2016-Datacenter" `
  -Version "latest"

# Sets the operating system disk properties on a VM.
$VirtualMachine = Set-AzVMOSDisk `
  -VM $VirtualMachine `
  -CreateOption FromImage | `
  Set-AzVMBootDiagnostic -ResourceGroupName $ResourceGroupName `
  -StorageAccountName $StorageAccountName -Enable |`
  Add-AzVMNetworkInterface -Id $nic.Id


# Create the VM.
New-AzVM `
  -ResourceGroupName $ResourceGroupName `
  -Location $location `
  -VM $VirtualMachine

连接到 VM

若要远程连接到在上一步骤中创建的 VM,需要使用其公共 IP 地址。 运行以下命令,获取 VM 的公共 IP 地址:

Get-AzPublicIpAddress `
  -ResourceGroupName $ResourceGroupName | Select IpAddress

使用以下命令创建与 VM 的远程桌面会话。 将 IP 地址替换为你的 VM 的 publicIPAddress。 出现提示时,请输入创建 VM 时使用的用户名和密码。

mstsc /v <publicIpAddress>

通过 PowerShell 安装 IIS

登录到 Azure VM 后,可以使用单行 PowerShell 安装 IIS,并启用本地防火墙规则以允许 Web 流量。 打开 PowerShell 提示符并运行以下命令:

Install-WindowsFeature -name Web-Server -IncludeManagementTools

查看 IIS 欢迎页

IIS 已安装,并且已打开 VM 上的端口 80,可以使用任何浏览器查看默认的 IIS 欢迎页。 请使用前面部分中记录的 publicIpAddress 来访问默认页面。

IIS default site

删除 VM

不再有需要时,可使用以下命令删除包含 VM 及其相关资源的资源组:

Remove-AzResourceGroup `
  -Name $ResourceGroupName

后续步骤

在本快速入门中,我们部署了一个简单的 Windows VM。 若要详细了解 Azure Stack Hub VM,请继续阅读 Azure Stack Hub VM 功能