練習 - 使用 Azure PowerShell 以互動方式建立 Azure 資源

已完成

在原始案例中,您必須建立虛擬機器 (VM) 來測試您的客戶關係管理 (CRM) 軟體。 當新的組建可用時,您想要啟用新的 VM,以從乾淨映像測試完整的安裝體驗。 測試完成後,您就可以刪除 VM。

讓我們試試建立 VM 的命令。

使用 Azure PowerShell 建立 Linux VM

既然您正在使用 Azure 沙箱,您不需要建立資源群組。 相反的,使用現有的沙箱資源群組[沙箱資源群組名稱]。 請注意位置限制。

以下說明如何使用 Azure PowerShell 建立新的 Azure VM:

  1. 使用 New-AzVM Cmdlet 建立 VM。

    • 指定沙箱資源群組:[沙箱資源群組名稱]

    • 遵循組織的命名標準來為 VM 命名。

    • 從可用的 Azure 沙箱位置清單中選擇靠近您的位置。

      • westus2
      • 美國中南部
      • centralus
      • eastus
      • westeurope
      • 東南亞
      • japaneast
      • brazilsouth
      • australiasoutheast
      • centralindia
    • 使用 Ubuntu Linux 映像:Canonical:0001-com-ubuntu-server-jammy:22_04-lts:latest

    • 使用 Get-Credential Cmdlet 來設定 VM 系統管理員認證。

    • 針對 SSH 存取,新增具有連接埠 22OpenPorts 參數。

    • 針對 SSH 登入,建立公用 IP 位址名稱。

    $azVmParams = @{
        ResourceGroupName   = '<rgn>[sandbox resource group name]</rgn>'
        Name                = 'testvm-eus-01'
        Credential          = (Get-Credential)
        Location            = 'eastus'
        Image               = 'Canonical:0001-com-ubuntu-server-jammy:22_04-lts:latest'
        OpenPorts           = 22
        PublicIpAddressName = 'testvm-eus-01'
    }
    New-AzVm @azVmParams
    

    提示

    您可以使用 [複製] 按鈕將命令複製到剪貼簿。 要貼上命令,請在 Cloud Shell 終端中,以滑鼠右鍵按一下新行,然後選取 [貼上],或使用 Shift+Insert 鍵盤快速鍵 (在 macOS 上為 ⌘+V)。

  2. 輸入認證:

    出現提示時,請遵循以下準則輸入使用者名稱和密碼:密碼長度必須為 12-123 個字元,並滿足以下四個複雜性要求中的三個:小寫字元、大寫字元、數字和特殊字元 (Regex 符合 [\W_])。 如需詳細資訊,請參閱 Linux VM 常見問題集 (部分機器翻譯)。

  3. 等候 VM 建立完成:

    VM 建立流程需要數分鐘的時間才能完成。

  4. 查詢 VM:

    完成後,查詢 VM 並將 VM 物件指派給變數 ($vm)。

    $vm = Get-AzVM -Name testvm-eus-01 -ResourceGroupName <rgn>[sandbox resource group name]</rgn>
    
  5. 檢視 VM 的資訊:

    若要檢視 VM 的資訊,請顯示變數的內容。

    $vm
    

    範例輸出:

    ResourceGroupName : <rgn>[sandbox resource group name]</rgn>
    Id                : /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/<rgn>[sandbox resource group name]</rgn>/providers/Microsoft.Compute/virtualMachines/testvm-eus-01
    VmId              : 00000000-0000-0000-0000-000000000000
    Name              : testvm-eus-01
    Type              : Microsoft.Compute/virtualMachines
    Location          : eastus
    Tags              : {}
    HardwareProfile   : {VmSize}
    NetworkProfile    : {NetworkInterfaces}
    OSProfile         : {ComputerName, AdminUsername, LinuxConfiguration, Secrets}
    ProvisioningState : Succeeded
    StorageProfile    : {ImageReference, OsDisk, DataDisks}
    ...
    
  6. 檢查 VM 屬性:

    您可以透過 member-access 運算子 (.) 來檢查複雜物件。 例如,若要查看 VMSize 物件中與 HardwareProfile 區段關聯的屬性,請執行下列命令:

    $vm.HardwareProfile
    

    或者,若要取得其中一個磁碟的相關資訊,請執行下列命令:

    $vm.StorageProfile.OsDisk
    
  7. 取得可用的 VM 大小:

    將 VM 物件傳遞到其他 Cmdlet 以取得可用大小:

    $vm | Get-AzVMSize
    
  8. 取得公用 IP 位址:

    擷取公用 IP 位址以連線到 VM,並將其儲存在變數中。

    $ip = Get-AzPublicIpAddress -ResourceGroupName <rgn>[sandbox resource group name]</rgn> -Name testvm-eus-01
    
  9. 連線至 VM:

    使用來自變數的 IP 位址,透過 SSH 連線到 VM。 例如,如果使用者名稱為 bob,請使用下列命令:

    ssh bob@$($ip.IpAddress)
    

    輸入 exit 來登出。

刪除 VM

若要嘗試更多命令,請先刪除 VM。 執行下列步驟:

  1. 將 VM 關機:

    執行以下命令:

    Stop-AzVM -Name $vm.Name -ResourceGroupName $vm.ResourceGroupName
    

    輸入 Y,並在出現提示時按 Enter 繼續。

  2. 刪除 VM:

    VM 停止後,執行 Remove-AzVM Cmdlet 以刪除 VM。

    Remove-AzVM -Name $vm.Name -ResourceGroupName $vm.ResourceGroupName
    

    輸入 Y,並在出現提示時按 Enter 繼續。

  3. 列出資源群組中的所有資源:

    使用 Get-AzResource Cmdlet 列出資源群組中的所有資源。 結果會透過管道傳送至 Select-Object 以傳回特定屬性:

    Get-AzResource -ResourceGroupName $vm.ResourceGroupName | 
        Select-Object -Property Name, ResourceType, ResourceGroupName
    

    您應該會看到數個仍存在的資源,包含磁碟、虛擬網路等等:

    Name                    ResourceType                            ResourceGroupName
    ----                    ------------                            -----------------
    cloudshell              Microsoft.Storage/storageAccounts       <rgn>[sandbox resource group name]</rgn>
    testvm-eus-01           Microsoft.Network/virtualNetworks       <rgn>[sandbox resource group name]</rgn>
    testvm-eus-01           Microsoft.Network/publicIPAddresses     <rgn>[sandbox resource group name]</rgn>
    testvm-eus-01           Microsoft.Network/networkSecurityGroups <rgn>[sandbox resource group name]</rgn>
    testvm-eus-01           Microsoft.Network/networkInterfaces     <rgn>[sandbox resource group name]</rgn>
    testvm-eus-01_OsDisk_1  Microsoft.Compute/disks                 <rgn>[sandbox resource group name]</rgn>
    

    Remove-AzVM 命令只會刪除 VM。 它並未清理其他任何資源。 若要手動清除它們,請遵循下列步驟:

  4. 刪除網路介面:

    Get-AzNetworkInterface -ResourceGroupName $vm.ResourceGroupName -Name $vm.Name |
        Remove-AzNetworkInterface
    

    輸入 Y,並在出現提示時按 Enter 繼續。

  5. 刪除網路安全性群組:

    Get-AzNetworkSecurityGroup -ResourceGroupName $vm.ResourceGroupName |
        Remove-AzNetworkSecurityGroup
    

    輸入 Y,並在出現提示時按 Enter 繼續。

  6. 刪除公用 IP 位址:

    Get-AzPublicIpAddress -ResourceGroupName $vm.ResourceGroupName |
        Remove-AzPublicIpAddress
    

    輸入 Y,並在出現提示時按 Enter 繼續。

  7. 刪除虛擬網路:

    Get-AzVirtualNetwork -ResourceGroupName $vm.ResourceGroupName |
        Remove-AzVirtualNetwork
    

    輸入 Y,並在出現提示時按 Enter 繼續。

  8. 刪除受控 OS 磁碟:

    Get-AzDisk -ResourceGroupName $vm.ResourceGroupName -DiskName $vm.StorageProfile.OSDisk.Name |
        Remove-AzDisk
    

    輸入 Y,並在出現提示時按 Enter 繼續。

  9. 確認已移除所有資源:

    檢查資源群組,以確保所有資源已移除:

    Get-AzResource -ResourceGroupName $vm.ResourceGroupName | 
        Select-Object -Property Name, ResourceType, ResourceGroupName
    

當您以互動方式執行這些命令時,更好的方法是撰寫 PowerShell 指令碼。 指令碼可讓您在未來重複使用邏輯來建立或刪除 VM

接下來,讓我們看看如何使用 PowerShell 指令碼將這些工作自動化。