共用方式為


透過 Azure PowerShell 在 Azure Stack Edge 裝置上部署 VM

適用於:是適用於 Pro GPU SKUAzure Stack Edge Pro - GPU是適用於 Pro 2 SKUAzure Stack Edge Pro 2適用於 Pro R SKU 的是Azure Stack Edge Pro R適用於迷你 R SKU 的是Azure Stack Edge Mini R

本文說明如何使用 Azure PowerShell,在 Azure Stack Edge 裝置上建立和管理虛擬機器 (VM)。

VM 部署工作流程

VM 部署的高階部署工作流程如下所示:

  1. 連線到裝置上的 Azure Resource Manager。
  2. 識別裝置上的內建訂用帳戶。
  3. 攜帶 VM 映像。
  4. 在內建的訂閱中建立資源群組。 資源群組將包含 VM 和所有相關資源。
  5. 在裝置上建立本機儲存體帳戶,以儲存將用來建立 VM 映像的 VHD。
  6. 將 Windows/Linux 來源映像上傳至儲存體帳戶,以建立受控磁碟。
  7. 使用受控磁碟來建立 VM 映像。
  8. 在裝置連接埠上啟用計算,以建立虛擬交換器。
  9. 這會使用連結至您啟用計算之連接埠的虛擬交換器來建立虛擬網路。
  10. 使用先前建立的 VM 映像、虛擬網路和虛擬網路介面建立 VM,以在虛擬網路內通訊,並將公用 IP 位址指派給遠端存取 VM。 選擇性地包含資料磁碟,為您的 VM 提供更多儲存體。

必要條件

可在 Azure Stack Edge 裝置上部署 VM 之前,您必須透過 Azure PowerShell 將用戶端設定為透過 Azure Resource Manager 連線到裝置。 如需詳細指示,請參閱連線到 Azure Stack Edge 裝置上的 Azure Resource Manager

請確定您可以使用下列步驟以從用戶端存取裝置。 當您已連線至 Azure Resource Manager 時,表示已完成此設定,現在您要確認設定成功。

  1. 執行下列命令,以確認 Azure Resource Manager 通訊是否正常運作:

    Add-AzEnvironment -Name <Environment Name> -ARMEndpoint "https://management.<appliance name>.<DNSDomain>"
    
  2. 若要呼叫本機裝置 API 以進行驗證,請輸入:

    login-AzAccount -EnvironmentName <Environment Name> -TenantId c0257de7-538f-415c-993a-1b87a031879d
    

    若要透過 Azure Resource Manager 進行連線,請提供使用者名稱 EdgeArmUser 和您的密碼。

  3. 如果您已設定 Kubernetes 的計算,則可以略過此步驟。 否則,請執行下列動作,以確定您已啟用用於計算的網路介面:

    a. 在本機使用者介面上,移至 [計算設定]
    b. 選取您想要用來建立虛擬交換器的網路介面。 您建立的 VM 將會連結虛擬交換器,而此虛擬交換器已連結至此連接埠和相關聯的網路。 請務必選擇符合您將用於 VM 之 IP 位址的網路。

    [計算組態網络設定] 窗格的螢幕快照。

    c. 在網路介面的 [啟用計算] 下,選取 [是]。 Azure Stack Edge 將會建立和管理對應至該網路介面的虛擬交換器。 目前請不要輸入 Kubernetes 的特定 IP。 啟用計算可能需要幾分鐘的時間。

    注意

    如果您要建立 GPU VM,則請選取連線至網際網路的網路介面。 這麼做可讓您在裝置上安裝 GPU 延伸模組。

查詢裝置上的內建訂用帳戶

針對 Azure Resource Manager,僅支援使用者可見的單一固定訂用帳戶。 此訂用帳戶是每個裝置的唯一訂用帳戶,而且無法變更訂用帳戶名稱和訂用帳戶識別碼。

訂用帳戶包含建立 VM 所需的所有資源。

重要

當您從 Azure 入口網站啟用 VM 時,就會建立訂用帳戶,且該訂用帳戶位於您的裝置本機。

訂用帳戶是用來部署 VM。

  1. 若要列出訂用帳戶,請執行下列命令:

    Get-AzSubscription
    

    以下是一些範例輸出:

    PS C:\WINDOWS\system32> Get-AzSubscription
    
    Name                          Id                                   TenantId
    ----                          --                                   --------
    Default Provider Subscription ...                                  ...
    
    
    PS C:\WINDOWS\system32>
    
  2. 取得在裝置上執行的已註冊資源提供者清單。 此清單通常包含計算、網路和儲存體。

    Get-AzResourceProvider
    

    注意

    系統會預先註冊資源提供者,而且無法修改或變更。

    以下是一些範例輸出:

    PS C:\WINDOWS\system32>  Get-AzResourceProvider
    
    ProviderNamespace : Microsoft.AzureBridge
    RegistrationState : Registered
    ResourceTypes     : {locations, operations, locations/ingestionJobs}
    Locations         : {DBELocal}
    
    ProviderNamespace : Microsoft.Compute
    RegistrationState : Registered
    ResourceTypes     : {virtualMachines, virtualMachines/extensions, locations, operations...}
    Locations         : {DBELocal}
    
    ProviderNamespace : Microsoft.Network
    RegistrationState : Registered
    ResourceTypes     : {operations, locations, locations/operations, locations/usages...}
    Locations         : {DBELocal}
    
    ProviderNamespace : Microsoft.Resources
    RegistrationState : Registered
    ResourceTypes     : {tenants, locations, providers, checkresourcename...}
    Locations         : {DBELocal}
    
    ProviderNamespace : Microsoft.Storage
    RegistrationState : Registered
    ResourceTypes     : {storageaccounts, storageAccounts/blobServices, storageAccounts/tableServices,
                        storageAccounts/queueServices...}
    Locations         : {DBELocal}
    
    PS C:\WINDOWS\system32>
    

建立資源群組

首先,建立新的 Azure 資源群組,並將其作為所有 VM 相關資源的邏輯容器,例如儲存體帳戶、磁碟、網路介面和受控磁碟。

重要

所有資源都會建立在裝置所在的相同位置,並將位置設定為 DBELocal

  1. 設定部分參數。

    $ResourceGroupName = "<Resource group name>" 
    
  2. 針對您要為 VM 建立的資源建立資源群組。

    New-AzResourceGroup -Name $ResourceGroupName -Location DBELocal
    

    以下是一些範例輸出:

    PS C:\WINDOWS\system32> New-AzResourceGroup -Name myaseazrg -Location DBELocal
    
    ResourceGroupName : myaseazrg
    Location          : dbelocal
    ProvisioningState : Succeeded
    Tags              :
    ResourceId        : /subscriptions/.../resourceGroups/myaseazrg
    
    PS C:\WINDOWS\system32>
    

建立本機儲存體帳戶

使用現有的資源群組建立新的本機儲存體帳戶。 使用此本機儲存體帳戶在建立 VM 時上傳虛擬磁碟映像。

建立本機儲存體帳戶之前,您必須將用戶端設定為透過 Azure PowerShell 經由 Azure Resource Manager 連線到裝置。 如需詳細指示,請參閱連線到 Azure Stack Edge 裝置上的 Azure Resource Manager

  1. 設定部分參數。

    $StorageAccountName = "<Storage account name>"    
    
  2. 在您的裝置上建立新的本機儲存體帳戶。

    New-AzStorageAccount -Name $StorageAccountName -ResourceGroupName $ResourceGroupName -Location DBELocal -SkuName Standard_LRS
    

    注意

    使用 Azure Resource Manager,您只能建立本機儲存體帳戶,例如本地備援儲存體 (標準或進階)。 若要建立階層式儲存體帳戶,請參閱教學課程:使用 Azure Stack Edge Pro with GPU 透過儲存體帳戶傳輸資料

    以下為範例輸出:

    PS C:\WINDOWS\system32> New-AzStorageAccount -Name myaseazsa -ResourceGroupName myaseazrg -Location DBELocal -SkuName Standard_LRS
    
    StorageAccountName ResourceGroupName PrimaryLocation SkuName      Kind    AccessTier CreationTime
    ------------------ ----------------- --------------- -------      ----    ---------- ------------
    myaseazsa          myaseazrg         DBELocal        Standard_LRS Storage            6/10/2021 11:45...
    
    PS C:\WINDOWS\system32>
    

若要取得您已建立的現有本機儲存體帳戶的存取金鑰,請提供相關聯的資源群組名稱和本機儲存體帳戶名稱。

Get-AzStorageAccountKey

以下為範例輸出:

PS C:\WINDOWS\system32> Get-AzStorageAccountKey
    
cmdlet Get-AzStorageAccountKey at command pipeline position 1
Supply values for the following parameters:
(Type !? for Help.)
ResourceGroupName: myaseazrg
Name: myaseazsa
    
KeyName    Value                                                                                       Permissions
-------    -----                                                                                       ------
key1       gv3OF57tuPDyzBNc1M7fhil2UAiiwnhTT6zgiwE3TlF/CD217Cvw2YCPcrKF47joNKRvzp44leUe5HtVkGx8RQ==    Full
key2       kmEynIs3xnpmSxWbU41h5a7DZD7v4gGV3yXa2NbPbmhrPt10+QmE5PkOxxypeSqbqzd9si+ArNvbsqIRuLH2Lw==    Full
    
PS C:\WINDOWS\system32>

將 Blob URI 新增至主機檔案

連線到您 Azure Stack Edge 裝置上的 Azure Resource Manager針對端點名稱解析修改主機檔案中,您已為用於連線到 Azure Blob 儲存體的用戶端新增了 Blob URI。 此項目用來新增 Blob URI:

<Device IP address> <storage name>.blob.<appliance name>.<dnsdomain>

安裝憑證

如果您使用 HTTPS,則必須在裝置上安裝適當的憑證。 在此請安裝 Blob 端點憑證。 如需詳細資訊,請參閱搭配您的 Azure Stack Edge Pro 搭配 GPU 裝置使用憑證

上傳 VHD

將任何要使用的磁碟映像複製至本機儲存體帳戶 (已在稍早建立) 中的分頁 Blob。 您可以使用 AzCopy 之類的工具,將虛擬硬碟 (VHD) 上傳至儲存體帳戶。

搭配 AzCopy 10 使用下列命令:

  1. 設定一些參數,包括適用於 AzCopy 的適當 API 版本。 在此範例中,使用了 AzCopy 10。

    $Env:AZCOPY_DEFAULT_SERVICE_API_VERSION="2019-07-07"    
    $ContainerName = <Container name>
    $ResourceGroupName = <Resource group name>
    $StorageAccountName = <Storage account name>
    $VHDPath = "Full VHD Path"
    $VHDFile = <VHD file name>
    
  2. 將 VHD 從來源 (在此案例中是本機系統) 複製到您在裝置上建立的儲存體帳戶。

    $StorageAccountKey = (Get-AzStorageAccountKey -ResourceGroupName $ResourceGroupName -Name $StorageAccountName)[0].Value
    $blobendpoint = (Get-AzEnvironment -Name Environment Name).StorageEndpointSuffix
    $StorageAccountContext = New-AzStorageContext -StorageAccountName $StorageAccountName -StorageAccountKey $StorageAccountKey -Endpoint $blobendpoint
    <Create the container if it does not exist>
    $containerName = "con1"
    $container = New-AzStorageContainer -Name $containerName -Context $StorageAccountContext -Permission Container
    $StorageAccountSAS = New-AzStorageAccountSASToken -Service Blob -ResourceType Container,Service,Object -Permission "acdlrw" -Context $StorageAccountContext -Protocol HttpsOnly
    $endPoint = (Get-AzStorageAccount -name $StorageAccountName -ResourceGroupName $ResourceGroupName).PrimaryEndpoints.Blob
    <Path to azcopy.exe> cp "$VHDPath\$VHDFile" "$endPoint$ContainerName$StorageAccountSAS"    
    

    以下為範例輸出:

    PS C:\windows\system32> $ContainerName = "testcontainer1"
    PS C:\windows\system32> $ResourceGroupName = "myaseazrg"
    PS C:\windows\system32> $StorageAccountName = "myaseazsa"
    PS C:\windows\system32> $VHDPath = "C:\Users\alkohli\Downloads\Ubuntu1604"           
    PS C:\windows\system32> $VHDFile = "ubuntu13.vhd"
    
    PS C:\windows\system32> $StorageAccountKey = (Get-AzStorageAccountKey -ResourceGroupName $ResourceGroupName -Name $StorageAccountName)[0].Value
    PS C:\windows\system32> $endPoint = (Get-AzStorageAccount -name $StorageAccountName -ResourceGroupName $ResourceGroupName).PrimaryEndpoints.Blob
    PS C:\windows\system32> $StorageAccountContext = New-AzStorageContext -StorageAccountName $StorageAccountName -StorageAccountKey $StorageAccountKey -Endpoint $endpoint
    PS C:\windows\system32> $StorageAccountSAS = New-AzStorageAccountSASToken -Service Blob -ResourceType Container,Service,Object -Permission "acdlrw" -Context $StorageAccountContext -Protocol HttpsOnly
    
    PS C:\windows\system32> C:\azcopy\azcopy_windows_amd64_10.10.0\azcopy.exe cp "$VHDPath\$VHDFile" "$endPoint$ContainerName$StorageAccountSAS"
    INFO: Scanning...
    INFO: Any empty folders will not be processed, because source and/or destination doesn't have full folder support
    
    Job 72a5e3dd-9210-3e43-6691-6bebd4875760 has started
    Log file is located at: C:\Users\alkohli\.azcopy\72a5e3dd-9210-3e43-6691-6bebd4875760.log
    
    INFO: azcopy.exe: A newer version 10.11.0 is available to download
    

從 VHD 建立受控磁碟

從上傳的 VHD 建立受控磁碟。

  1. 設定部分參數。

    $DiskName = "<Managed disk name>"
    $HyperVGeneration = "<Generation of the image: V1 or V2>"
    
  2. 從上傳的 VHD 建立受控磁碟。 若要取得 VHD 的來源 URL,請移至儲存體帳戶中的容器,其中包含儲存體總管中的 VHD。 選取 VHD,然後按一下滑鼠右鍵,然後選取 [屬性]。 在 [Blob 屬性] 對話方塊中,選取 URI

    $StorageAccountId = (Get-AzStorageAccount -ResourceGroupName $ResourceGroupName -Name $StorageAccountName).Id    
    $DiskConfig = New-AzDiskConfig -Location DBELocal -HyperVGeneration $HyperVGeneration -StorageAccountId $StorageAccountId -CreateOption Import -SourceUri "Source URL for your VHD"
    New-AzDisk -ResourceGroupName $ResourceGroupName -DiskName $DiskName -Disk $DiskConfig
    

    以下為範例輸出:

    PS C:\WINDOWS\system32> $DiskName = "myazmd"
    PS C:\WINDOWS\system32  $HyperVGeneration = "V1"
    PS C:\WINDOWS\system32> $StorageAccountId = (Get-AzStorageAccount -ResourceGroupName $ResourceGroupName -Name $StorageAccountName).Id
    PS C:\WINDOWS\system32> $DiskConfig = New-AzDiskConfig -Location DBELocal -HyperVGeneration $HyperVGeneration -StorageAccountId $StorageAccountId -CreateOption Import -SourceUri "https://myaseazsa.blob.myasegpu.wdshcsso.com/testcontainer1/ubuntu13.vhd"
    PS C:\WINDOWS\system32> New-AzDisk -ResourceGroupName $ResourceGroupName -DiskName $DiskName -Disk $DiskConfig
    
    ResourceGroupName            : myaseazrg
    ManagedBy                    :
    Sku                          : Microsoft.Azure.Management.Compute.Models.DiskSku
    Zones                        :
    TimeCreated                  : 6/24/2021 12:19:56 PM
    OsType                       :
    HyperVGeneration             : V1
    CreationData                 : Microsoft.Azure.Management.Compute.Models.CreationDat
                                   a
    DiskSizeGB                   : 30
    DiskSizeBytes                : 32212254720
    UniqueId                     : 53743801-cbf2-4d2f-acb4-971d037a9395
    EncryptionSettingsCollection :
    ProvisioningState            : Succeeded
    DiskIOPSReadWrite            : 500
    DiskMBpsReadWrite            : 60
    DiskState                    : Unattached
    Encryption                   : Microsoft.Azure.Management.Compute.Models.Encryption
    Id                           : /subscriptions/.../r
                                   esourceGroups/myaseazrg/providers/Microsoft.Compute/d
                                   isks/myazmd
    Name                         : myazmd
    Type                         : Microsoft.Compute/disks
    Location                     : DBELocal
    Tags                         : {}
    
    PS C:\WINDOWS\system32>
    

從受控磁碟建立 VM 映像

您現在已從受控磁碟建立 VM 映像。

  1. 設定部分參數。

    $DiskSize = "<Size greater than or equal to size of source managed disk>"
    $OsType = "<linux or windows>" 
    $ImageName = "<Image name>"
    
  2. 建立 VM 映像。 支援的 OS 類型為 Linux 和 Windows。

    $imageConfig = New-AzImageConfig -Location DBELocal -HyperVGeneration $hyperVGeneration 
    $ManagedDiskId = (Get-AzDisk -Name $DiskName -ResourceGroupName $ResourceGroupName).Id
    Set-AzImageOsDisk -Image $imageConfig -OsType $OsType -OsState 'Generalized' -DiskSizeGB $DiskSize -ManagedDiskId $ManagedDiskId 
    New-AzImage -Image $imageConfig -ImageName $ImageName -ResourceGroupName $ResourceGroupName  
    

    以下為範例輸出。

    PS C:\WINDOWS\system32> $OsType = "linux"
    PS C:\WINDOWS\system32> $ImageName = "myaseazlinuxvmimage"
    PS C:\WINDOWS\system32> $DiskSize = 35
    PS C:\WINDOWS\system32> $imageConfig = New-AzImageConfig -Location DBELocal
    PS C:\WINDOWS\system32> $ManagedDiskId = (Get-AzDisk -Name $DiskName -ResourceGroupName $ResourceGroupName).Id
    PS C:\WINDOWS\system32> Set-AzImageOsDisk -Image $imageConfig -OsType $OsType -OsState 'Generalized' -DiskSizeGB $DiskSize -ManagedDiskId $ManagedDiskId
    
    ResourceGroupName    :
    SourceVirtualMachine :
    StorageProfile       : Microsoft.Azure.Management.Compute.Models.ImageStorageProfile
    ProvisioningState    :
    HyperVGeneration     : V1
    Id                   :
    Name                 :
    Type                 :
    Location             : DBELocal
    Tags                 :
    
    PS C:\WINDOWS\system32> New-AzImage -Image $imageConfig -ImageName $ImageName -ResourceGroupName $ResourceGroupName
    
    ResourceGroupName    : myaseazrg
    SourceVirtualMachine :
    StorageProfile       : Microsoft.Azure.Management.Compute.Models.ImageStorageProfile
    ProvisioningState    : Succeeded
    HyperVGeneration     : V1
    Id                   : /subscriptions/.../resourceG
                           roups/myaseazrg/providers/Microsoft.Compute/images/myaseazlin
                           uxvmimage
    Name                 : myaseazlinuxvmimage
    Type                 : Microsoft.Compute/images
    Location             : dbelocal
    Tags                 : {}
    
    PS C:\WINDOWS\system32> 
    

使用先前建立的資源建立 VM

建立和部署 VM 之前,您必須建立一個虛擬網路,並將虛擬網路介面與其建立關聯。

重要

適用的規則如下:

  • 您只能建立一個虛擬網路,甚至是跨資源群組。 虛擬網路必須與邏輯網路完全相同的位址空間。
  • 每個虛擬網路只能擁有一個子網路。 子網路必須與虛擬網路具有相同的位址空間。
  • 當您建立虛擬網路介面卡時,只能使用靜態配置方法。 使用者必須提供私人 IP 位址。

查詢自動建立的虛擬網路

當您從裝置的本機 UI 啟用計算時,系統會在 ASERG 資源群組下自動建立名為 ASEVNET 的虛擬網路。

使用下列命令來查詢現有的虛擬網路:

$ArmVn = Get-AzVirtualNetwork -Name ASEVNET -ResourceGroupName ASERG 

建立虛擬網路介面卡

您使用虛擬網路子網識別碼來建立虛擬網路介面卡。

  1. 設定部分參數。

    $IpConfigName = "<IP config name>"
    $NicName = "<Network interface name>"
    
  2. 建立虛擬網路介面。

    $ipConfig = New-AzNetworkInterfaceIpConfig -Name $IpConfigName -SubnetId $aRmVN.Subnets[0].Id 
    $Nic = New-AzNetworkInterface -Name $NicName -ResourceGroupName $ResourceGroupName -Location DBELocal -IpConfiguration $IpConfig    
    

    依預設,IP 會從已啟用計算的網路動態指派給您的網路介面。 如果您要將靜態 IP 配置至網路介面,請使用 -PrivateIpAddress parameter

    以下為範例輸出:

    PS C:\WINDOWS\system32> $IpConfigName = "myazipconfig1"
    PS C:\WINDOWS\system32> $NicName = "myaznic1"
    PS C:\WINDOWS\system32> $ipConfig = New-AzNetworkInterfaceIpConfig -Name $IpConfigName -SubnetId $aRmVN.Subnets[0].Id 
    PS C:\WINDOWS\system32> $ipConfig = New-AzNetworkInterfaceIpConfig -Name $IpConfigName -SubnetId $aRmVN.Subnets[0].Id
    PS C:\WINDOWS\system32> $Nic = New-AzNetworkInterface -Name $NicName -ResourceGroupName $ResourceGroupName -Location DBELocal -IpConfiguration $IpConfig
    PS C:\WINDOWS\system32> $Nic
    
    Name                        : myaznic1
    ResourceGroupName           : myaseazrg
    Location                    : dbelocal
    Id                          : /subscriptions/.../re
                                  sourceGroups/myaseazrg/providers/Microsoft.Network/net
                                  workInterfaces/myaznic1
    Etag                        : W/"0b20057b-2102-4f34-958b-656327c0fb1d"
    ResourceGuid                : e7d4131f-6f01-4492-9d4c-a8ff1af7244f
    ProvisioningState           : Succeeded
    Tags                        :
    VirtualMachine              : null
    IpConfigurations            : [
                                    {
                                      "Name": "myazipconfig1",
                                      "Etag":
                                  "W/\"0b20057b-2102-4f34-958b-656327c0fb1d\"",
                                      "Id": "/subscriptions/.../resourceGroups/myaseazrg/providers/Microsoft.
                                  Network/networkInterfaces/myaznic1/ipConfigurations/my
                                  azipconfig1",
                                      "PrivateIpAddress": "10.126.76.60",
                                      "PrivateIpAllocationMethod": "Dynamic",
                                      "Subnet": {
                                        "Delegations": [],
                                        "Id": "/subscriptions/.../resourceGroups/ASERG/providers/Microsoft.Ne
                                  twork/virtualNetworks/ASEVNET/subnets/ASEVNETsubNet",
                                        "ServiceAssociationLinks": []
                                      },
                                      "ProvisioningState": "Succeeded",
                                      "PrivateIpAddressVersion": "IPv4",
                                      "LoadBalancerBackendAddressPools": [],
                                      "LoadBalancerInboundNatRules": [],
                                      "Primary": true,
                                      "ApplicationGatewayBackendAddressPools": [],
                                      "ApplicationSecurityGroups": []
                                    }
                                  ]
    DnsSettings                 : {
                                    "DnsServers": [],
                                    "AppliedDnsServers": [],
                                    "InternalDomainNameSuffix": "auwlfcx0dhxurjgisct43fc
                                  ywb.a--x.internal.cloudapp.net"
                                  }
    EnableIPForwarding          : False
    EnableAcceleratedNetworking : False
    NetworkSecurityGroup        : null
    Primary                     :
    MacAddress                  : 001DD84A58D1
    
    PS C:\WINDOWS\system32>
    

或者,當您為 VM 建立虛擬網路卡時,您可以傳遞公用 IP。 在此實例中,公用 IP 會傳回私人 IP。

New-AzPublicIPAddress -Name <Public IP> -ResourceGroupName <ResourceGroupName> -AllocationMethod Static -Location DBELocal
$publicIP = (Get-AzPublicIPAddress -Name <Public IP> -ResourceGroupName <Resource group name>).Id
$ipConfig = New-AzNetworkInterfaceIpConfig -Name <ConfigName> -PublicIpAddressId $publicIP -SubnetId $subNetId

建立 VM

您現在可以使用 VM 映像來建立 VM,並將其連結至您稍早建立的虛擬網路。

  1. 將使用者名稱和密碼設定為登入您想要建立的 VM。

    $pass = ConvertTo-SecureString "<Password>" -AsPlainText -Force;
    $cred = New-Object System.Management.Automation.PSCredential("<Enter username>", $pass)
    

    建立並啟動 VM 之後,請使用上述使用者名稱和密碼來登入 VM。

  2. 設定參數。

    $VmName = "<VM name>"
    $ComputerName = "<VM display name>"
    $OsDiskName = "<OS disk name>"
    
  3. 建立 VM。

    $VirtualMachine =  New-AzVMConfig -VmName $VmName -VMSize "Standard_D1_v2"
    
    $VirtualMachine =  Set-AzVMOperatingSystem -VM $VirtualMachine -Linux -ComputerName $ComputerName -Credential $cred
    
    $VirtualMachine =  Set-AzVmOsDisk -VM $VirtualMachine -Name $OsDiskName -Caching "ReadWrite" -CreateOption "FromImage" -Linux -StorageAccountType Standard_LRS
    
    $nicID = (Get-AzNetworkInterface -Name $NicName -ResourceGroupName $ResourceGroupName).Id
    
    $VirtualMachine =  Add-AzVMNetworkInterface -Vm $VirtualMachine -Id $nicID
    
    $image = ( Get-AzImage -ResourceGroupName $ResourceGroupName -ImageName $ImageName).Id
    
    $VirtualMachine =  Set-AzVMSourceImage -VM $VirtualMachine -Id $image
    
    New-AzVM -ResourceGroupName $ResourceGroupName -Location DBELocal -VM $VirtualMachine -Verbose
    

    以下為範例輸出。

    PS C:\WINDOWS\system32> $pass = ConvertTo-SecureString "Password1" -AsPlainText -Force;
    PS C:\WINDOWS\system32> $cred = New-Object System.Management.Automation.PSCredential("myazuser", $pass)
    PS C:\WINDOWS\system32> $VmName = "myazvm"
    >> $ComputerName = "myazvmfriendlyname"
    >> $OsDiskName = "myazosdisk1"
    PS C:\WINDOWS\system32> $VirtualMachine =  New-AzVMConfig -VmName $VmName -VMSize "Standard_D1_v2"
    PS C:\WINDOWS\system32> $VirtualMachine =  Set-AzVMOperatingSystem -VM $VirtualMachine -Linux -ComputerName $ComputerName -Credential $cred
    PS C:\WINDOWS\system32> $VirtualMachine =  Set-AzVmOsDisk -VM $VirtualMachine -Name $OsDiskName -Caching "ReadWrite" -CreateOption "FromImage" -Linux -StorageAccountType Standard_LRS
    PS C:\WINDOWS\system32> $nicID = (Get-AzNetworkInterface -Name $NicName -ResourceGroupName $ResourceGroupName).Id
    PS C:\WINDOWS\system32> $nicID/subscriptions/.../resourceGroups/myaseazrg/providers/Microsoft.Network/networkInterfaces/myaznic1
    PS C:\WINDOWS\system32> $VirtualMachine =  Add-AzVMNetworkInterface -VM $VirtualMachine -Id $nicID
    PS C:\WINDOWS\system32> $image = ( Get-AzImage -ResourceGroupName $ResourceGroupName -ImageName $ImageName).Id
    PS C:\WINDOWS\system32> $VirtualMachine =  Set-AzVMSourceImage -VM $VirtualMachine -Id $image
    PS C:\WINDOWS\system32> New-AzVM -ResourceGroupName $ResourceGroupName -Location DBELocal -VM $VirtualMachine -Verbose
    WARNING: Since the VM is created using premium storage or managed disk, existing
    standard storage account, myaseazsa, is used for boot diagnostics.
    VERBOSE: Performing the operation "New" on target "myazvm".
    
    RequestId IsSuccessStatusCode StatusCode ReasonPhrase
    --------- ------------------- ---------- ------------
                             True         OK OK
    
  4. 若要找出指派給您所建立 VM 的 IP,請查詢您所建立的虛擬網路介面。 找出 PrivateIPAddress 並複製 VM 的 IP。 以下為範例輸出。

    PS C:\WINDOWS\system32> $Nic
    
    Name                        : myaznic1
    ResourceGroupName           : myaseazrg
    Location                    : dbelocal
    Id                          : /subscriptions/.../re
                                  sourceGroups/myaseazrg/providers/Microsoft.Network/net
                                  workInterfaces/myaznic1
    Etag                        : W/"0b20057b-2102-4f34-958b-656327c0fb1d"
    ResourceGuid                : e7d4131f-6f01-4492-9d4c-a8ff1af7244f
    ProvisioningState           : Succeeded
    Tags                        :
    VirtualMachine              : null
    IpConfigurations            : [
                                    {
                                      "Name": "myazipconfig1",
                                      "Etag":
                                  "W/\"0b20057b-2102-4f34-958b-656327c0fb1d\"",
                                      "Id": "/subscriptions/.../resourceGroups/myaseazrg/providers/Microsoft.
                                  Network/networkInterfaces/myaznic1/ipConfigurations/my
                                  azipconfig1",
                                      "PrivateIpAddress": "10.126.76.60",
                                      "PrivateIpAllocationMethod": "Dynamic",
                                      "Subnet": {
                                        "Delegations": [],
                                        "Id": "/subscriptions/.../resourceGroups/ASERG/providers/Microsoft.Ne
                                  twork/virtualNetworks/ASEVNET/subnets/ASEVNETsubNet",
                                        "ServiceAssociationLinks": []
                                      },
                                      "ProvisioningState": "Succeeded",
                                      "PrivateIpAddressVersion": "IPv4",
                                      "LoadBalancerBackendAddressPools": [],
                                      "LoadBalancerInboundNatRules": [],
                                      "Primary": true,
                                      "ApplicationGatewayBackendAddressPools": [],
                                      "ApplicationSecurityGroups": []
                                    }
                                  ]
    DnsSettings                 : {
                                    "DnsServers": [],
                                    "AppliedDnsServers": [],
                                    "InternalDomainNameSuffix": "auwlfcx0dhxurjgisct43fc
                                  ywb.a--x.internal.cloudapp.net"
                                  }
    EnableIPForwarding          : False
    EnableAcceleratedNetworking : False
    NetworkSecurityGroup        : null
    Primary                     :
    MacAddress                  : 001DD84A58D1
    
    PS C:\WINDOWS\system32>
    

連線至 VM

視您建立 Windows VM 或 Linux VM 而定,連線指示可能不同。

連線至 Linux VM (英文)

若要連線至 Linux VM,請執行下列動作:

使用您在建立 VM 時所傳遞的私人 IP 來連線到 VM。

  1. 開啟 SSH 工作階段,以使用 IP 位址進行連線。

    ssh -l <username> <ip address>
    
  2. 在提示出現時,提供您在建立 VM 時所使用的密碼。

    如果您需要提供 SSH 金鑰,則請使用此命令。

    ssh -i c:/users/Administrator/.ssh/id_rsa Administrator@5.5.41.236

    以下是您連線至 VM 時的範例輸出:

    PS C:\WINDOWS\system32> ssh -l myazuser "10.126.76.60"
    The authenticity of host '10.126.76.60 (10.126.76.60)' can't be established.
    ECDSA key fingerprint is SHA256:V649Zbo58zAYMKreeP7M6w7Na0Yf9QPg4SM7JZVV0E4.
    Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
    Warning: Permanently added '10.126.76.60' (ECDSA) to the list of known hosts.
    myazuser@10.126.76.60's password:
    Welcome to Ubuntu 18.04.2 LTS (GNU/Linux 4.18.0-1013-azure x86_64)
    
     * Documentation:  https://help.ubuntu.com
     * Management:     https://landscape.canonical.com
     * Support:        https://ubuntu.com/advantage
    
     System information disabled due to load higher than 1.0
    
      Get cloud support with Ubuntu Advantage Cloud Guest:
        http://www.ubuntu.com/business/services/cloud
    
    284 packages can be updated.
    192 updates are security updates. 
    
    The programs included with the Ubuntu system are free software;
    the exact distribution terms for each program are described in the
    individual files in /usr/share/doc/*/copyright.
    
    Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
    applicable law.
    
    To run a command as administrator (user "root"), use "sudo <command>".
    See "man sudo_root" for details.
    
    myazuser@myazvmfriendlyname:~$ client_loop: send disconnect: Connection reset
    PS C:\WINDOWS\system32>
    

如果您在建立 VM 期間使用了公用 IP 位址,您可以使用該 IP 來連線到 VM。 若要取得公用 IP,請執行下列命令:

$publicIp = Get-AzPublicIpAddress -Name $PublicIp -ResourceGroupName $ResourceGroupName

在此執行個體中,公用 IP 與您在建立虛擬網路介面期間傳遞的私人 IP 相同。

連線至 Windows VM

若要連線到 Windows VM,請執行下列動作:

使用遠端桌面通訊協定 (RDP),透過您在 VM 建立期間所傳遞的 IP 連線至您的 Windows VM。

  1. 在您的用戶端上,開啟 RDP。

  2. 移至 [開始],然後輸入 mstsc

  3. 在 [遠端桌面連線] 窗格上,輸入 VM 的 IP 位址,以及您在 VM 範本參數檔案中所使用的存取認證。 然後選取 [連線]。

    [遠端桌面連線] 窗格的螢幕快照,用於透過 RDP 連線到您的 Windows VM。

    注意

    您可能需要核准連線至不受信任的機器。

您現在已登入設備上所執行的 VM。

管理 VM

下列各節說明您可以在 Azure Stack Edge Pro 裝置上建立的一些常見作業。

列出在裝置上執行的 VM

若要傳回在 Azure Stack Edge 裝置上執行的所有 VM 清單,請執行此命令:

Get-AzVM -ResourceGroupName <String> -Name <String>

如需關於此 Cmdlet 的詳細資訊,請參閱 Get-AzVM

開啟 VM

若要開啟在您的裝置上執行的虛擬機器,請執行下列 Cmdlet:

Start-AzVM [-Name] <String> [-ResourceGroupName] <String>

如需關於此 Cmdlet 的詳細資訊,請參閱 Start-AzVM

暫停或關閉 VM

若要停止或關閉在您裝置上執行的虛擬機器,請執行下列 Cmdlet:

Stop-AzVM [-Name] <String> [-StayProvisioned] [-ResourceGroupName] <String>

如需關於此 Cmdlet 的詳細資訊,請參閱 Stop-AzVM Cmdlet

調整 VM 的大小

若要調整現有虛擬機的大小,請執行下列 Cmdlet:

重要

在調整其大小之前,請先停止 VM, -StayProvisioned 而不使用 旗標。

$vm = Get-AzVM [-Name] <String> [-ResourceGroupName] <String>

$vm.HardwareProfile.VmSize = <new size> - Example: "Standard_D3_v2"

$vm | Update-AzVM

新增資料磁碟

如果 VM 上的工作負載需求增加,您可能需要新增資料磁碟。 若要這樣做,請執行下列命令:

Add-AzRmVMDataDisk -VM $VirtualMachine -Name "disk1" -VhdUri "https://contoso.blob.core.windows.net/vhds/diskstandard03.vhd" -LUN 0 -Caching ReadOnly -DiskSizeinGB 1 -CreateOption Empty 
 
Update-AzVM -ResourceGroupName "<Resource Group Name string>" -VM $VirtualMachine

刪除 VM

若要從您的裝置移除虛擬機器,請執行下列 Cmdlet:

Remove-AzVM [-Name] <String> [-ResourceGroupName] <String>

如需關於此 Cmdlet 的詳細資訊,請參閱 Remove-AzVm cmdlet

下一步

Azure Resource Manager 的 Cmdlet