PowerShell เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ Azure VM เชจเซ‡ เชฌเชฆเชฒเซ‹ เช…เชจเซ‡ เชฆเซ‚เชฐ เช•เชฐเซ‹

เชชเชพเชตเชฐเชถเซ‡เชฒเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡, เชเชจเซเชœเชฟเชจเชฟเชฏเชฐเซ‹ เช…เชจเซ‡ เช†เช‡เชŸเซ€ เชเชกเชฎเชฟเชจเชฟเชธเซเชŸเซเชฐเซ‡เชŸเชฐเซ‹ เชธเชซเชณเชคเชพเชชเซ‚เชฐเซเชตเช• เชตเชฟเชตเชฟเชง เช•เชพเชฐเซเชฏเซ‹เชจเซ‡ เชธเซเชตเชšเชพเชฒเชฟเชค เช•เชฐเซ‡ เช›เซ‡ เชœเซเชฏเชพเชฐเซ‡ เชฎเชพเชคเซเชฐ เช“เชจ-เชชเซเชฐเชฟเชฎเชฟเชธเซ€เชธ เชธเชพเชฅเซ‡ เชœ เชจเชนเซ€เช‚, เชชเชฃ เช•เซเชฒเชพเช‰เชก เช‡เชจเซเชซเซเชฐเชพเชธเซเชŸเซเชฐเช•เซเชšเชฐ เชธเชพเชฅเซ‡ เชชเชฃ เช–เชพเชธ เช•เชฐเซ€เชจเซ‡ Azure เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡. เช•เซ‡เชŸเชฒเชพเช• เช•เชฟเชธเซเชธเชพเช“เชฎเชพเช‚, PowerShell เชฎเชพเชฐเชซเชคเซ‡ เช•เชพเชฎ เช•เชฐเชตเซเช‚ เช Azure เชชเซ‹เชฐเซเชŸเชฒ เชฆเซเชตเชพเชฐเชพ เช•เชพเชฎ เช•เชฐเชคเชพเช‚ เชตเชงเซ เช…เชจเซเช•เซ‚เชณ เช…เชจเซ‡ เชเชกเชชเซ€ เช›เซ‡. เชคเซ‡เชจเชพ เช•เซเชฐเซ‹เชธ-เชชเซเชฒเซ‡เชŸเชซเซ‹เชฐเซเชฎ เชชเซเชฐเช•เซƒเชคเชฟเชจเซ‡ เช•เชพเชฐเชฃเซ‡, เชชเชพเชตเชฐเชถเซ‡เชฒเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เซ‹เชˆเชชเชฃ เช“เชชเชฐเซ‡เชŸเชฟเช‚เช— เชธเชฟเชธเซเชŸเชฎ เชชเชฐ เชฅเชˆ เชถเช•เซ‡ เช›เซ‡.

เชญเชฒเซ‡ เชคเชฎเซ‡ Ubuntu, Red Hat เช…เชฅเชตเชพ Windows เชšเชฒเชพเชตเซ€ เชฐเชนเซเชฏเชพเช‚ เชนเซ‹เชต, PowerShell เชคเชฎเชจเซ‡ เชคเชฎเชพเชฐเชพ เช•เซเชฒเชพเช‰เชก เชธเช‚เชธเชพเชงเชจเซ‹เชจเซ‡ เชจเชฟเชฏเช‚เชคเซเชฐเชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เชฎเชฆเชฆ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡. เชฎเซ‹เชกเซเชฏเซเชฒเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชเชเซเชฏเซเชฐ เชชเชพเชตเชฐเชถเซ‡เชฒ, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชคเชฎเซ‡ เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชฎเชถเซ€เชจเซ‹เชจเซ€ เช•เซ‹เชˆเชชเชฃ เช—เซเชฃเชงเชฐเซเชฎเซ‹ เชธเซ‡เชŸ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹.

เช† เชฒเซ‡เช–เชฎเชพเช‚, เช…เชฎเซ‡ เชœเซ‹เชˆเชถเซเช‚ เช•เซ‡ เชคเชฎเซ‡ Azure เช•เซเชฒเชพเช‰เชกเชฎเชพเช‚ VMเชจเซเช‚ เช•เชฆ เชฌเชฆเชฒเชตเชพ เชฎเชพเชŸเซ‡ เชชเชพเชตเชฐเชถเซ‡เชฒเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹, เชคเซ‡เชฎเชœ VM เช…เชจเซ‡ เชคเซ‡เชจเซ€ เชธเชพเชฅเซ‡ เชธเช‚เช•เชณเชพเชฏเซ‡เชฒ เช‘เชฌเซเชœเซ‡เช•เซเชŸเชจเซ‡ เช•เชพเชขเซ€ เชถเช•เซ‹ เช›เซ‹.

PowerShell เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ Azure VM เชจเซ‡ เชฌเชฆเชฒเซ‹ เช…เชจเซ‡ เชฆเซ‚เชฐ เช•เชฐเซ‹

เชฎเชนเชคเซเชตเชชเซ‚เชฐเซเชฃ! เช•เชพเชฎเชจเซ€ เชคเซˆเชฏเชพเชฐเซ€ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชคเชฎเชพเชฐเชพ เชนเชพเชฅเชจเซ‡ เชธเซ‡เชจเชฟเชŸเชพเชˆเชเชฐเชฅเซ€ เชฒเซ‚เช›เชตเชพเชจเซเช‚ เชญเซ‚เชฒเชถเซ‹ เชจเชนเซ€เช‚:

  • เชคเชฎเชพเชฐเซ‡ เชฎเซ‹เชกเซเชฏเซเชฒเชจเซ€ เชœเชฐเซ‚เชฐ เชชเชกเชถเซ‡ เชเชเซเชฏเซเชฐ เชชเชพเชตเชฐเชถเซ‡เชฒ เชฎเซ‹เชกเซเชฏเซเชฒ - เชคเซ‡ เช†เชฆเซ‡เชถ เชธเชพเชฅเซ‡ เชชเชพเชตเชฐเชถเซ‡เชฒ เช—เซ‡เชฒเซ‡เชฐเซ€เชฎเชพเช‚เชฅเซ€ เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡ Install-Module Az.
  • เชคเชฎเชพเชฐเซ‡ Azure เช•เซเชฒเชพเช‰เชกเชฎเชพเช‚ เชชเซเชฐเชฎเชพเชฃเชฟเชค เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ เชœเซเชฏเชพเช‚ เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชฎเชถเซ€เชจ เช†เชฆเซ‡เชถ เชšเชฒเชพเชตเซ€เชจเซ‡ เชšเชพเชฒเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡ Connect-AzAccount.

เชชเซเชฐเชฅเชฎ, เชšเชพเชฒเซ‹ เชเช• เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชฌเชจเชพเชตเซ€เช เชœเซ‡ Azure VMเชจเซเช‚ เช•เชฆ เชฌเชฆเชฒเชถเซ‡. เชšเชพเชฒเซ‹ VS เช•เซ‹เชก เช–เซ‹เชฒเซ€เช เช…เชจเซ‡ เชจเชตเซ€ เชชเชพเชตเชฐเชถเซ‡เชฒ เชธเซเช•เซเชฐเชฟเชชเซเชŸเชจเซ‡ เชธเชพเชšเชตเซ€เช เชฎเชพเชช เชฌเชฆเชฒเซ‹-AzVirtualMachine.ps1 - เชœเซ‡เชฎ เชœเซ‡เชฎ เช‰เชฆเชพเชนเชฐเชฃ เช†เช—เชณ เชตเชงเซ‡ เชคเซ‡เชฎ เช…เชฎเซ‡ เชคเซ‡เชฎเชพเช‚ เช•เซ‹เชกเชจเชพ เชŸเซเช•เชกเชพ เช‰เชฎเซ‡เชฐเซ€เชถเซเช‚.

เช…เชฎเซ‡ เช‰เชชเชฒเชฌเซเชง VM เช•เชฆเชจเซ€ เชตเชฟเชจเช‚เชคเซ€ เช•เชฐเซ€เช เช›เซ€เช

เชคเชฎเซ‡ VM เช•เชฆ เชฌเชฆเชฒเซ‹ เชคเซ‡ เชชเชนเซ‡เชฒเชพเช‚, เชคเชฎเชพเชฐเซ‡ Azure เช•เซเชฒเชพเช‰เชกเชฎเชพเช‚ เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชฎเชถเซ€เชจเซ‹ เชฎเชพเชŸเซ‡ เชธเซเชตเซ€เช•เชพเชฐเซเชฏ เช•เชฆ เชถเซเช‚ เช›เซ‡ เชคเซ‡ เชถเซ‹เชงเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เช† เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชคเชฎเชพเชฐเซ‡ เช†เชฆเซ‡เชถ เชšเชฒเชพเชตเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ Get-AzVMSize.

เชคเซ‡เชฅเซ€ เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชฎเชถเซ€เชจ เชฎเชพเชŸเซ‡ devvm01 เชธเช‚เชธเชพเชงเชจ เชœเซ‚เชฅเชฎเชพเช‚เชฅเซ€ เชฆเซ‡เชต เช…เชฎเซ‡ เชคเชฎเชพเชฎ เชถเช•เซเชฏ เชธเซเชตเซ€เช•เชพเชฐเซเชฏ เช•เชฆเชจเซ€ เชตเชฟเชจเช‚เชคเซ€ เช•เชฐเซ€เช เช›เซ€เช:

Get-AzVMSize -ResourceGroupName dev -VMName devvm01

(เชตเชพเชธเซเชคเชตเชฟเช• เชธเชฎเชธเซเชฏเชพเช“เชฎเชพเช‚, เช…เชฒเชฌเชคเซเชค, เชคเซ‡เชจเชพ เชฌเชฆเชฒเซ‡ ResourceGroupName=dev ะธ VMName=devvm01 เชคเชฎเซ‡ เช† เชชเชฐเชฟเชฎเชพเชฃเซ‹ เชฎเชพเชŸเซ‡ เชคเชฎเชพเชฐเชพ เชชเซ‹เชคเชพเชจเชพ เชฎเซ‚เชฒเซเชฏเซ‹เชจเซ‹ เช‰เชฒเซเชฒเซ‡เช– เช•เชฐเชถเซ‹.)

เช†เชฆเซ‡เชถ เช†เชจเชพ เชœเซ‡เชตเซเช‚ เช•เช‚เชˆเช• เช†เชชเชถเซ‡:

PowerShell เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ Azure VM เชจเซ‡ เชฌเชฆเชฒเซ‹ เช…เชจเซ‡ เชฆเซ‚เชฐ เช•เชฐเซ‹

เช† เชฌเชงเชพ เชธเช‚เชญเชตเชฟเชค เช•เชฆ เชตเชฟเช•เชฒเซเชชเซ‹ เช›เซ‡ เชœเซ‡ เช†เชชเซ‡เชฒ เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชฎเชถเซ€เชจ เชฎเชพเชŸเซ‡ เชธเซ‡เชŸ เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡.

เชšเชพเชฒเซ‹ เช•เชพเชฐเชจเซเช‚ เช•เชฆ เชฌเชฆเชฒเซ€เช

เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เช…เชฎเซ‡ เชจเชตเชพ เช•เชฆเชฎเชพเช‚ เชฎเชพเชช เชฌเชฆเชฒเซ€เชถเซเช‚ เชงเซ‹เชฐเชฃ_B1ls - เชคเซ‡ เช‰เชชเชฐเชจเซ€ เชฏเชพเชฆเซ€เชฎเชพเช‚ เชชเซเชฐเชฅเชฎ เชธเซเชฅเชพเชจเซ‡ เช›เซ‡. (เชตเชพเชธเซเชคเชตเชฟเช•-เชœเซ€เชตเชจเชจเซ€ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซ‹เชฎเชพเช‚, เช…เชฒเชฌเชคเซเชค, เชคเชฎเซ‡ เช—เชฎเซ‡ เชคเซ‡ เช•เชฆ เชชเชธเช‚เชฆ เช•เชฐเซ‹ เช›เซ‹.)

  1. เชชเซเชฐเชฅเชฎ เช†เชฆเซ‡เชถเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‹ Get-AzVM เช…เชฎเซ‡ เช…เชฎเชพเชฐเชพ เช‘เชฌเซเชœเซ‡เช•เซเชŸ (เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชฎเชถเซ€เชจ) เชตเชฟเชถเซ‡ เชคเซ‡เชจเซ‡ เชตเซ‡เชฐเซ€เชเชฌเชฒเชฎเชพเช‚ เชธเซเชŸเซ‹เชฐ เช•เชฐเซ€เชจเซ‡ เชฎเชพเชนเชฟเชคเซ€ เชฎเซ‡เชณเชตเซ€เช เช›เซ€เช $virtualMachine:
    $virtualMachine = Get-AzVM -ResourceGroupName dev -VMName devvm01
  2. เชชเช›เซ€ เช†เชชเชฃเซ‡ เช† เชชเชฆเชพเชฐเซเชฅเชฎเชพเช‚เชฅเซ€ เชฎเชฟเชฒเช•เชค เชฒเชˆเช เช›เซ€เช .HardwareProfile.VmSize เช…เชจเซ‡ เช‡เชšเซเช›เชฟเชค เชจเชตเซ€ เช•เชฟเช‚เชฎเชค เชธเซ‡เชŸ เช•เชฐเซ‹:
    $virtualMachine.HardwareProfile.VmSize = "Standard_B1ls"
  3. เช…เชจเซ‡ เชนเชตเซ‡ เช†เชชเชฃเซ‡ เชซเช•เซเชค VM เช…เชชเชกเซ‡เชŸ เช†เชฆเซ‡เชถ เชšเชฒเชพเชตเซ€เช เช›เซ€เช - Update-AzVm:
    Update-AzVM -VM devvm01 -ResourceGroupName dev
  4. เช…เชฎเซ‡ เช–เชพเชคเชฐเซ€ เช•เชฐเซ€เช เช›เซ€เช เช•เซ‡ เชฌเชงเซเช‚ เชฌเชฐเชพเชฌเชฐ เชฅเชฏเซเช‚ เช›เซ‡ - เช† เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เช…เชฎเซ‡ เชซเชฐเซ€เชฅเซ€ เช…เชฎเชพเชฐเชพ เช‘เชฌเซเชœเซ‡เช•เซเชŸ เชตเชฟเชถเซ‡เชจเซ€ เชฎเชพเชนเชฟเชคเซ€เชจเซ€ เชตเชฟเชจเช‚เชคเซ€ เช•เชฐเซ€เช เช›เซ€เช เช…เชจเซ‡ เชฎเชฟเชฒเช•เชคเชจเซ‡ เชœเซเช“ $virtualMachine.HardwareProfile:
    $virtualMachine = Get-AzVM -ResourceGroupName dev -VMName devvm01
    $virtualMachine.HardwareProfile

เชœเซ‹ เช†เชชเชฃเซ‡ เชคเซเชฏเชพเช‚ เชœเซ‹เชˆเช เชงเซ‹เชฐเชฃ_B1ls - เชคเซ‡เชจเซ‹ เช…เชฐเซเชฅ เช เช›เซ‡ เช•เซ‡ เชฌเชงเซเช‚ เช•เซเชฐเชฎเชฎเชพเช‚ เช›เซ‡, เช•เชพเชฐเชจเซเช‚ เช•เชฆ เชฌเชฆเชฒเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เช›เซ‡. เชคเชฎเซ‡ เช†เช—เชณ เชœเชˆ เชถเช•เซ‹ เช›เซ‹ เช…เชจเซ‡ เชเชฐเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชเช•เชธเชพเชฅเซ‡ เช…เชจเซ‡เช• VM เชจเซเช‚ เช•เชฆ เชฌเชฆเชฒเซ€เชจเซ‡ เชคเชฎเชพเชฐเซ€ เชธเชซเชณเชคเชพเชจเซ‡ เชตเชงเชพเชฐเซ€ เชถเช•เซ‹ เช›เซ‹.

Azure เชฎเชพเช‚ VM เช•เชพเชขเซ€ เชจเชพเช–เชตเชพ เชตเชฟเชถเซ‡ เชถเซเช‚?

เช•เชพเชขเซ€ เชจเชพเช–เชตเชพ เชธเชพเชฅเซ‡, เชฌเชงเซเช‚ เชเชŸเชฒเซเช‚ เชธเชฐเชณ เช…เชจเซ‡ เชธเซ€เชงเซเช‚ เชจเชฅเซ€ เชœเซ‡เชŸเชฒเซเช‚ เชฒเชพเช—เซ‡ เช›เซ‡. เช›เซ‡เชตเชŸเซ‡, เช† เชฎเชถเซ€เชจ เชธเชพเชฅเซ‡ เชธเช‚เช•เชณเชพเชฏเซ‡เชฒเชพ เชธเช‚เช–เซเชฏเชพเชฌเช‚เชง เชธเช‚เชธเชพเชงเชจเซ‹ เชฆเซ‚เชฐ เช•เชฐเชตเชพ เชœเชฐเซ‚เชฐเซ€ เช›เซ‡, เชœเซ‡เชฎเชพเช‚ เชจเซ€เชšเซ‡เชจเชพเชจเซ‹ เชธเชฎเชพเชตเซ‡เชถ เชฅเชพเชฏ เช›เซ‡:

  • เชฌเซเชŸ เชกเชพเชฏเช—เซเชจเซ‹เชธเซเชŸเชฟเช•เซเชธ เชธเซเชŸเซ‹เชฐเซ‡เชœ เช•เชจเซเชŸเซ‡เชจเชฐ
  • เชจเซ‡เชŸเชตเชฐเซเช• เช‡เชจเซเชŸเชฐเชซเซ‡เชธเซ‹
  • เชธเชพเชฐเซเชตเชœเชจเชฟเช• IP เชธเชฐเชจเชพเชฎเชพเช‚
  • เชธเชฟเชธเซเชŸเชฎ เชกเชฟเชธเซเช• เช…เชจเซ‡ เชฌเซเชฒเซ‹เชฌ เชœเซเชฏเชพเช‚ เชคเซ‡เชจเซ€ เชธเซเชฅเชฟเชคเชฟ เชธเช‚เช—เซเชฐเชนเชฟเชค เช›เซ‡
  • เชกเซ‡เชŸเชพ เชกเชฟเชธเซเช•

เชคเซ‡เชฅเซ€, เช…เชฎเซ‡ เชเช• เชซเช‚เช•เซเชถเชจ เชฌเชจเชพเชตเซ€เชถเซเช‚ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เช•เซ‰เชฒ เช•เชฐเซ€เชถเซเช‚ Remove-AzrVirtualMachine - เช…เชจเซ‡ เชคเซ‡ เชฎเชพเชคเซเชฐ Azure VM เชœ เชจเชนเซ€เช‚, เชชเชฃ เช‰เชชเชฐเซ‹เช•เซเชค เชคเชฎเชพเชฎเชจเซ‡ เชชเชฃ เช•เชพเชขเซ€ เชจเชพเช–เชถเซ‡.

เช…เชฎเซ‡ เชธเซเชŸเชพเชจเซเชกเชฐเซเชก เชฐเซ€เชคเซ‡ เชœเชˆเช เช›เซ€เช เช…เชจเซ‡ เชชเชนเซ‡เชฒเชพ เช†เชฆเซ‡เชถเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช†เชชเชฃเซเช‚ เช‘เชฌเซเชœเซ‡เช•เซเชŸ (VM) เชฎเซ‡เชณเชตเซ€เช เช›เซ€เช Get-AzVm. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชคเซ‡เชจเซ‡ เชเช• เช•เชพเชฐ เชฌเชจเชตเชพ เชฆเซ‹ WINSRV19 เชธเช‚เชธเชพเชงเชจ เชœเซ‚เชฅเชฎเชพเช‚เชฅเซ€ MyTestVMs.

เชšเชพเชฒเซ‹ เช† เช“เชฌเซเชœเซ‡เช•เซเชŸเชจเซ‡ เชคเซ‡เชจเซ€ เชคเชฎเชพเชฎ เชชเซเชฐเซ‹เชชเชฐเซเชŸเซ€เช เชธเชพเชฅเซ‡ เชตเซ‡เชฐเซ€เชเชฌเชฒเชฎเชพเช‚ เชธเซ‡เชต เช•เชฐเซ€เช $vm:

$vm = Get-AzVm -Name WINSRV19 -ResourceGroupName MyTestVMs

เชฌเซเชŸ เชกเชพเชฏเช—เซเชจเซ‹เชธเซเชŸเชฟเช• เชซเชพเช‡เชฒเซ‹ เชธเชพเชฅเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐ เชฆเซ‚เชฐ เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช

Azure เชฎเชพเช‚ VM เชฌเชจเชพเชตเชคเซ€ เชตเช–เชคเซ‡, เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเชจเซ‡ เชฌเซเชŸ เชกเชพเชฏเช—เซเชจเซ‹เชธเซเชŸเชฟเช•เซเชธ (เชฌเซ‚เชŸ เชกเชพเชฏเช—เซเชจเซ‹เชธเซเชŸเชฟเช•เซเชธ เช•เชจเซเชŸเซ‡เชจเชฐ) เชธเซเชŸเซ‹เชฐ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชเช• เช•เชจเซเชŸเซ‡เชจเชฐ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชชเชฃ เช•เชนเซ‡เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชœเซ‡เชฅเซ€ เชœเซ‹ เชฌเซ‚เชŸเชฟเช‚เช—เชฎเชพเช‚ เชธเชฎเชธเซเชฏเชพ เชนเซ‹เชฏ, เชคเซ‹ เชฎเซเชถเซเช•เซ‡เชฒเซ€เชจเชฟเชตเชพเชฐเชฃ เชฎเชพเชŸเซ‡ เช•เช‚เชˆเช• เช•เชฐเชตเชพเชจเซเช‚ เช›เซ‡. เชœเซ‹ เช•เซ‡, เชœเซเชฏเชพเชฐเซ‡ VM เช•เชพเชขเซ€ เชจเชพเช–เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชคเซเชฏเชพเชฐเซ‡ เช† เช•เชจเซเชŸเซ‡เชจเชฐ เชคเซ‡เชจเชพ เชนเชตเซ‡ เชนเซ‡เชคเซเชนเซ€เชจ เช…เชธเซเชคเชฟเชคเซเชตเชจเซ‡ เชšเชพเชฒเซ เชฐเชพเช–เชตเชพ เชฎเชพเชŸเซ‡ เช›เซ‹เชกเซ€ เชฆเซ‡เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เชšเชพเชฒเซ‹ เช† เชชเชฐเชฟเชธเซเชฅเชฟเชคเชฟเชจเซ‡ เช เซ€เช• เช•เชฐเซ€เช.

  1. เชชเซเชฐเชฅเชฎ, เชšเชพเชฒเซ‹ เชถเซ‹เชงเซ€ เช•เชพเชขเซ€เช เช•เซ‡ เช† เช•เชจเซเชŸเซ‡เชจเชฐ เช•เชฏเชพ เชธเซเชŸเซ‹เชฐเซ‡เชœ เชเช•เชพเช‰เชจเซเชŸเชจเซเช‚ เช›เซ‡ - เช† เชฎเชพเชŸเซ‡ เช†เชชเชฃเซ‡ เชฎเชฟเชฒเช•เชค เชถเซ‹เชงเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ storageUri เชชเชฆเชพเชฐเซเชฅเชจเชพ เช†เช‚เชคเชฐเชกเชพเชฎเชพเช‚ DiagnosticsProfile เช…เชฎเชพเชฐเชพ VM. เช† เชฎเชพเชŸเซ‡ เชนเซเช‚ เช† เชจเชฟเชฏเชฎเชฟเชค เช…เชญเชฟเชตเซเชฏเช•เซเชคเชฟเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซเช‚ เช›เซเช‚:
    $diagSa = [regex]::match($vm.DiagnosticsProfile.bootDiagnostics.storageUri, '^http[s]?://(.+?)\.').groups[1].value
  2. เชนเชตเซ‡ เชคเชฎเชพเชฐเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐเชจเซเช‚ เชจเชพเชฎ เชถเซ‹เชงเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡, เช…เชจเซ‡ เช† เชฎเชพเชŸเซ‡ เชคเชฎเชพเชฐเซ‡ เช†เชฆเซ‡เชถเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ VM ID เชฎเซ‡เชณเชตเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ Get-AzResource:
    
    if ($vm.Name.Length -gt 9) {
        $i = 9
    } else {
        $i = $vm.Name.Length - 1
    }
     
    $azResourceParams = @{
        'ResourceName' = WINSRV
        'ResourceType' = 'Microsoft.Compute/virtualMachines'
        'ResourceGroupName' = MyTestVMs
    }
     
    $vmResource = Get-AzResource @azResourceParams
    $vmId = $vmResource.Properties.VmId
    $diagContainerName = ('bootdiagnostics-{0}-{1}' -f $vm.Name.ToLower().Substring(0, $i), $vmId)
    
  3. เช†เช—เชณ, เช…เชฎเชจเซ‡ เชธเช‚เชธเชพเชงเชจ เชœเซ‚เชฅเชจเซเช‚ เชจเชพเชฎ เชฎเชณเซ‡ เช›เซ‡ เช•เซ‡ เชœเซ‡เชฎเชพเช‚ เช•เชจเซเชŸเซ‡เชจเชฐ เช›เซ‡:
    $diagSaRg = (Get-AzStorageAccount | where { $_.StorageAccountName -eq $diagSa }).ResourceGroupName
  4. เช…เชจเซ‡ เชนเชตเซ‡ เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เช†เชฆเซ‡เชถ เชธเชพเชฅเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐเชจเซ‡ เช•เชพเชขเซ€ เชจเชพเช–เชตเชพ เชฎเชพเชŸเซ‡ เชœเชฐเซ‚เชฐเซ€ เชฌเชงเซเช‚ เช›เซ‡ Remove-AzStorageContainer:
    $saParams = @{
        'ResourceGroupName' = $diagSaRg
        'Name' = $diagSa
    }
     
    Get-AzStorageAccount @saParams | Get-AzStorageContainer | where { $_.Name-eq $diagContainerName } | Remove-AzStorageContainer -Force

VM เชฆเซ‚เชฐ เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช

เชนเชตเซ‡ เช†เชชเชฃเซ‡ เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชฎเชถเซ€เชจเชจเซ‡ เชœ เชกเซ€เชฒเซ€เชŸ เช•เชฐเซ€เช, เช•เชพเชฐเชฃ เช•เซ‡ เช†เชชเชฃเซ‡ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เชตเซ‡เชฐเซ€เชเชฌเชฒ เชฌเชจเชพเชตเซ€ เชฒเซ€เชงเซเช‚ เช›เซ‡ $vm เช…เชจเซเชฐเซ‚เชช เชชเชฆเชพเชฐเซเชฅ เชฎเชพเชŸเซ‡. เชธเชพเชฐเซเช‚, เชšเชพเชฒเซ‹ เช†เชฆเซ‡เชถ เชšเชฒเชพเชตเซ€เช Remove-AzVm:

$null = $vm | Remove-AzVM -Force

เชจเซ‡เชŸเชตเชฐเซเช• เชˆเชจเซเชŸเชฐเชซเซ‡เชธ เช…เชจเซ‡ เชธเชพเชฐเซเชตเชœเชจเชฟเช• IP เชธเชฐเชจเชพเชฎเซเช‚ เชฆเซ‚เชฐ เช•เชฐเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡

เช…เชฎเชพเชฐเชพ VM เชชเชพเชธเซ‡ เชนเชœเซ เชชเชฃ เชเช• (เช…เชฅเชตเชพ เช…เชจเซ‡เช•) เชจเซ‡เชŸเชตเชฐเซเช• เชˆเชจเซเชŸเชฐเชซเซ‡เชธ (NICs) เช›เซ‡ - เชคเซ‡เชฎเชจเซ‡ เชฌเชฟเชจเชœเชฐเซ‚เชฐเซ€ เชคเชฐเซ€เช•เซ‡ เชฆเซ‚เชฐ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชšเชพเชฒเซ‹ เชชเซเชฐเซ‹เชชเชฐเซเชŸเซ€เชฎเชพเช‚ เชœเชˆเช NetworkInterfaces เช…เชฎเชพเชฐเชพ VM เช‘เชฌเซเชœเซ‡เช•เซเชŸ เช…เชจเซ‡ เช†เชฆเซ‡เชถ เชธเชพเชฅเซ‡ NIC เช•เชพเชขเซ€ เชจเชพเช–เซ‹ Remove-AzNetworkInterface. เชœเซ‹ เชคเซเชฏเชพเช‚ เชเช• เช•เชฐเชคเชพเช‚ เชตเชงเซ เชจเซ‡เชŸเชตเชฐเซเช• เช‡เชจเซเชŸเชฐเชซเซ‡เชธ เชนเซ‹เชฏ, เชคเซ‹ เช…เชฎเซ‡ เชฒเซ‚เชชเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เช เช›เซ€เช. เชคเซ‡ เชœ เชธเชฎเชฏเซ‡, เชฆเชฐเซ‡เช• NIC เชฎเชพเชŸเซ‡ เช…เชฎเซ‡ เชฎเชฟเชฒเช•เชคเชจเซ€ เชคเชชเชพเชธ เช•เชฐเซ€เชถเซเช‚ IpConfiguration เช‡เชจเซเชŸเชฐเชซเซ‡เชธเชฎเชพเช‚ เชธเชพเชฐเซเชตเชœเชจเชฟเช• IP เชธเชฐเชจเชพเชฎเซเช‚ เช›เซ‡ เช•เซ‡ เช•เซ‡เชฎ เชคเซ‡ เชจเช•เซเช•เซ€ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡. เชœเซ‹ เชเช• เชฎเชณเซ€ เช†เชตเซ‡, เชคเซ‹ เช…เชฎเซ‡ เชคเซ‡เชจเซ‡ เช†เชฆเซ‡เชถ เชธเชพเชฅเซ‡ เชฆเซ‚เชฐ เช•เชฐเซ€เชถเซเช‚ Remove-AzPublicIpAddress.

เช…เชนเซ€เช‚ เช†เชตเชพ เชœ เช•เซ‹เชกเชจเซเช‚ เช‰เชฆเชพเชนเชฐเชฃ เช›เซ‡, เชœเซเชฏเชพเช‚ เช†เชชเชฃเซ‡ เชฌเชงเชพ NIC เชจเซ‡ เชฒเซ‚เชชเชฎเชพเช‚ เชœเซ‹เชˆเช เช›เซ€เช, เชคเซ‡เชจเซ‡ เช•เชพเชขเซ€ เชจเชพเช–เซ€เช เช›เซ€เช เช…เชจเซ‡ เชคเชชเชพเชธเซ€เช เช›เซ€เช เช•เซ‡ เชธเชพเชฐเซเชตเชœเชจเชฟเช• IP เช›เซ‡ เช•เซ‡ เชจเชนเซ€เช‚. เชœเซ‹ เชคเซเชฏเชพเช‚ เชนเซ‹เชฏ, เชคเซ‹ เชชเช›เซ€ เชฎเชฟเชฒเช•เชคเชจเซเช‚ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เช•เชฐเซ‹ PublicIpAddress, ID เชฆเซเชตเชพเชฐเชพ เช…เชจเซเชฐเซ‚เชช เชธเช‚เชธเชพเชงเชจเชจเซเช‚ เชจเชพเชฎ เชถเซ‹เชงเซ‹ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เช•เชพเชขเซ€ เชจเชพเช–เซ‹:


foreach($nicUri in $vm.NetworkProfile.NetworkInterfaces.Id) {
    $nic = Get-AzNetworkInterface -ResourceGroupName $vm.ResourceGroupName -Name $nicUri.Split('/')[-1]
    Remove-AzNetworkInterface -Name $nic.Name -ResourceGroupName $vm.ResourceGroupName -Force

    foreach($ipConfig in $nic.IpConfigurations) {
        if($ipConfig.PublicIpAddress -ne $null) {
            Remove-AzPublicIpAddress -ResourceGroupName $vm.ResourceGroupName -Name $ipConfig.PublicIpAddress.Id.Split('/')[-1] -Force
        }
    }
}

เชธเชฟเชธเซเชŸเชฎ เชกเชฟเชธเซเช• เชฆเซ‚เชฐ เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช

OS เชกเชฟเชธเซเช• เชเช• เชฌเซเชฒเซ‹เชฌ เช›เซ‡, เชœเซ‡เชจเชพ เชฎเชพเชŸเซ‡ เชคเซ‡เชจเซ‡ เช•เชพเชขเซ€ เชจเชพเช–เชตเชพเชจเซ‹ เช†เชฆเซ‡เชถ เช›เซ‡ Remove-AzStorageBlob - เชชเชฐเช‚เชคเซ เชคเซ‡เชจเซ‡ เช…เชฎเชฒเชฎเชพเช‚ เชฎเซ‚เช•เชคเชพ เชชเชนเซ‡เชฒเชพ, เชคเชฎเชพเชฐเซ‡ เชคเซ‡เชจเชพ เชชเชฐเชฟเชฎเชพเชฃเซ‹ เชฎเชพเชŸเซ‡ เชœเชฐเซ‚เชฐเซ€ เชฎเซ‚เชฒเซเชฏเซ‹ เชธเซ‡เชŸ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชชเชกเชถเซ‡. เช† เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เช–เชพเชธ เช•เชฐเซ€เชจเซ‡, เชคเชฎเชพเชฐเซ‡ เชธเชฟเชธเซเชŸเชฎ เชกเชฟเชธเซเช• เชงเชฐเชพเชตเชคเชพ เชธเซเชŸเซ‹เชฐเซ‡เชœ เช•เชจเซเชŸเซ‡เชจเชฐเชจเซเช‚ เชจเชพเชฎ เชฎเซ‡เชณเชตเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡, เช…เชจเซ‡ เชชเช›เซ€ เชคเซ‡เชจเซ‡ เชธเช‚เชฌเช‚เชงเชฟเชค เชธเซเชŸเซ‹เชฐเซ‡เชœ เชเช•เชพเช‰เชจเซเชŸ เชธเชพเชฅเซ‡ เช† เช†เชฆเซ‡เชถ เชชเชฐ เชฎเซ‹เช•เชฒเซ‹.

$osDiskUri = $vm.StorageProfile.OSDisk.Vhd.Uri
$osDiskContainerName = $osDiskUri.Split('/')[-2]
$osDiskStorageAcct = Get-AzStorageAccount | where { $_.StorageAccountName -eq $osDiskUri.Split('/')[2].Split('.')[0] }
$osDiskStorageAcct | Remove-AzStorageBlob -Container $osDiskContainerName -Blob $osDiskUri.Split('/')[-1]

เชธเชฟเชธเซเชŸเชฎ เชกเชฟเชธเซเช• เชธเซเชฅเชฟเชคเชฟ เชฌเซเชฒเซ‹เชฌ เชฆเซ‚เชฐ เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช

เช† เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชœเซ‡เชฎ เชคเชฎเซ‡ เช•เชฆเชพเชš เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เช…เชจเซเชฎเชพเชจ เชฒเช—เชพเชตเซเชฏเซเช‚ เช›เซ‡, เช…เชฎเซ‡ เชธเซเชŸเซ‹เชฐเซ‡เชœ เช•เชจเซเชŸเซ‡เชจเชฐ เชฒเชˆเช เช›เซ€เช เชœเซ‡เชฎเชพเช‚ เช† เชกเชฟเชธเซเช• เชธเช‚เช—เซเชฐเชนเชฟเชค เช›เซ‡, เช…เชจเซ‡, เชธเซ‚เชšเชตเซ‡ เช›เซ‡ เช•เซ‡ เช…เช‚เชคเชฎเชพเช‚ เชฌเซเชฒเซ‹เชฌ เชงเชฐเชพเชตเซ‡ เช›เซ‡ status, เชกเชฟเชฒเซ€เชŸ เช•เชฎเชพเชจเซเชกเชจเซ‡ เช…เชจเซเชฐเซ‚เชช เชชเชฐเชฟเชฎเชพเชฃเซ‹ เชชเชธเชพเชฐ เช•เชฐเซ‹ Remove-AzStorageBlob:

$osDiskStorageAcct | Get-AzStorageBlob -Container $osDiskContainerName -Blob "$($vm.Name)*.status" | Remove-AzStorageBlob

เช…เชจเซ‡ เช…เช‚เชคเซ‡, เช…เชฎเซ‡ เชกเซ‡เชŸเชพ เชกเชฟเชธเซเช• เชฆเซ‚เชฐ เช•เชฐเซ€เช เช›เซ€เช

เช…เชฎเชพเชฐเซ€ VM เชนเชœเซ เชชเชฃ เชคเซ‡เชจเซ€ เชธเชพเชฅเซ‡ เชœเซ‹เชกเชพเชฏเซ‡เชฒ เชกเซ‡เชŸเชพ เชงเชฐเชพเชตเชคเซ€ เชกเชฟเชธเซเช• เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡. เชœเซ‹ เชคเซ‡เชฎเชจเซ€ เชœเชฐเซ‚เชฐ เชจเชฅเซ€, เชคเซ‹ เช…เชฎเซ‡ เชคเซ‡เชฎเชจเซ‡ เชชเชฃ เช•เชพเชขเซ€ เชจเชพเช–เซ€เชถเซเช‚. เชšเชพเชฒเซ‹ เชชเชนเซ‡เชฒเชพ เชคเซ‡เชจเซเช‚ เชตเชฟเชถเซเชฒเซ‡เชทเชฃ เช•เชฐเซ€เช StorageProfile เช…เชฎเชพเชฐเชพ VM เช…เชจเซ‡ เชฎเชฟเชฒเช•เชค เชถเซ‹เชงเซ‹ Uri. เชœเซ‹ เชคเซเชฏเชพเช‚ เช˜เชฃเซ€ เชกเชฟเชธเซเช• เชนเซ‹เชฏ, เชคเซ‹ เช…เชฎเซ‡ เชคเซ‡ เชฎเซเชœเชฌ เชเช• เชšเช•เซเชฐ เช—เซ‹เช เชตเซ€เช เช›เซ€เช URI. เชฆเชฐเซ‡เช• URI เชฎเชพเชŸเซ‡, เช…เชฎเซ‡ เช…เชจเซเชฐเซ‚เชช เชธเซเชŸเซ‹เชฐเซ‡เชœ เชเช•เชพเช‰เชจเซเชŸเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชถเซ‹เชงเซ€เชถเซเช‚ Get-AzStorageAccount. เชชเช›เซ€ เช‡เชšเซเช›เชฟเชค เชฌเซเชฒเซ‹เชฌ เชจเชพเชฎ เช•เชพเชขเชตเชพ เชฎเชพเชŸเซ‡ เชธเซเชŸเซ‹เชฐเซ‡เชœ URI เชจเซ‡ เชชเชพเชฐเซเชธ เช•เชฐเซ‹ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชกเชฟเชฒเซ€เชŸ เช•เชฎเชพเชจเซเชกเชฎเชพเช‚ เชชเชพเชธ เช•เชฐเซ‹ Remove-AzStorageBlob เชธเซเชŸเซ‹เชฐเซ‡เชœ เชเช•เชพเช‰เชจเซเชŸ เชธเชพเชฅเซ‡. เช† เชคเซ‡ เช•เซ‹เชกเชฎเชพเช‚ เชœเซ‡เชตเซ‹ เชฆเซ‡เช–เชพเชถเซ‡:

if ($vm.DataDiskNames.Count -gt 0) {
    foreach ($uri in $vm.StorageProfile.DataDisks.Vhd.Uri) {
        $dataDiskStorageAcct = Get-AzStorageAccount -Name $uri.Split('/')[2].Split('.')[0]
        $dataDiskStorageAcct | Remove-AzStorageBlob -Container $uri.Split('/')[-2] -Blob $uri.Split('/')[-1]
    }
}

เช…เชจเซ‡ เชนเชตเซ‡ "เช…เชฎเซ‡ เชธเซเช–เซ€ เช…เช‚เชค เชธเซเชงเซ€ เชชเชนเซ‹เช‚เชšเซ€ เช—เชฏเชพ เช›เซ€เช!" เชนเชตเซ‡ เช†เชชเชฃเซ‡ เช† เชฌเชงเชพ เชŸเซเช•เชกเชพเช“เชฎเชพเช‚เชฅเซ€ เชเช• เชธเช‚เชชเซ‚เชฐเซเชฃ เชเชธเซ‡เชฎเซเชฌเชฒ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เชฆเชฏเชพเชณเซ เชฒเซ‡เช–เช• เชเชกเชฎ เชฌเชฐเซเชŸเซเชฐเชพเชฎ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“เชจเซ‡ เช…เชกเชงเชพ เชฐเชธเซเชคเซ‡ เชฎเชณเซเชฏเชพ เช…เชจเซ‡ เชคเซ‡ เชœเชพเชคเซ‡ เช•เชฐเซเชฏเซเช‚. เช…เชนเซ€เช‚ เช•เชนเซ‡เชตเชพเชคเซ€ เช…เช‚เชคเชฟเชฎ เชธเซเช•เซเชฐเชฟเชชเซเชŸเชจเซ€ เชฒเชฟเช‚เช• เช›เซ‡ Remove-AzrVirtualMachine.ps1:

โ†’ GitHub

เชนเซเช‚ เช†เชถเชพ เชฐเชพเช–เซเช‚ เช›เซเช‚ เช•เซ‡ Azure VM เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ เชคเชฎเชพเชฐเชพ เชชเซเชฐเชฏเชคเซเชจเซ‹, เชธเชฎเชฏ เช…เชจเซ‡ เชจเชพเชฃเชพเช‚ เชฌเชšเชพเชตเชตเชพเชฎเชพเช‚ เชคเชฎเชจเซ‡ เช† เชตเซเชฏเชตเชนเชพเชฐเซ เชŸเซ€เชชเซเชธ เชฎเชฆเชฆเชฐเซ‚เชช เชฒเชพเช—เชถเซ‡.

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹