PowerShell рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ Azure VMs рдкрд░рд┐рдорд╛рд░реНрдЬрди рд░ рдореЗрдЯрд╛рдЙрдиреЗ

PowerShell рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░, рдЗрдиреНрдЬрд┐рдирд┐рдпрд░рд╣рд░реВ рд░ IT рдкреНрд░рд╢рд╛рд╕рдХрд╣рд░реВрд▓реЗ рдЕрди-рдкреНрд░рд┐рдорд╛рдЗрд╕реЗрд╕рдорд╛ рдорд╛рддреНрд░ рд╣реЛрдЗрди, рдХреНрд▓рд╛рдЙрдб рдкреВрд░реНрд╡рд╛рдзрд╛рд░рд╣рд░реВрдорд╛ рдкрдирд┐, рд╡рд┐рд╢реЗрд╖ рдЧрд░реА Azure рд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрджрд╛ рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░реНрдпрд╣рд░реВ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЧрд░реНрдЫрдиреНред рдХреЗрд╣рд┐ рдЕрд╡рд╕реНрдерд╛рдорд╛, PowerShell рдорд╛рд░реНрдлрдд рдХрд╛рдо рдЧрд░реНрдиреБ Azure рдкреЛрд░реНрдЯрд▓ рдорд╛рд░реНрдлрдд рдХрд╛рдо рдЧрд░реНрдиреБ рднрдиреНрджрд╛ рдзреЗрд░реИ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд░ рдЫрд┐рдЯреЛ рдЫред рдпрд╕рдХреЛ рдХреНрд░рд╕-рдкреНрд▓реЗрдЯрдлрд░реНрдо рдкреНрд░рдХреГрддрд┐рдХреЛ рд▓рд╛рдЧрд┐ рдзрдиреНрдпрд╡рд╛рдж, PowerShell рдХреБрдиреИ рдкрдирд┐ рдЕрдкрд░реЗрдЯрд┐рдЩ рд╕рд┐рд╕реНрдЯрдордорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред

рдЪрд╛рд╣реЗ рддрдкрд╛рдЗрдБ Ubuntu, Red Hat, рд╡рд╛ Windows рдЪрд▓рд╛рдЙрдБрджреИ рд╣реБрдиреБрд╣реБрдиреНрдЫ, PowerShell рд▓реЗ рддрдкрд╛рдЗрдБрд▓рд╛рдИ рддрдкрд╛рдЗрдБрдХреЛ рдХреНрд▓рд╛рдЙрдб рд╕реНрд░реЛрддрд╣рд░реВ рдирд┐рдпрдиреНрддреНрд░рдг рдЧрд░реНрди рдорджреНрджрдд рдЧрд░реНрди рд╕рдХреНрдЫред рдореЛрдбреНрдпреБрд▓ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИ Azure PowerShell, рдЙрджрд╛рд╣рд░рдг рдХреЛ рд▓рд╛рдЧреА, рддрдкрд╛рдЗрдБ рднрд░реНрдЪреБрдЕрд▓ рдорд┐рд╕рд┐рди рдХреЛ рдХреБрдиреИ рдкрдирд┐ рдЧреБрдг рд╕реЗрдЯ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред

рдпрд╕ рд▓реЗрдЦрдорд╛, рд╣рд╛рдореА рддрдкрд╛рдЗрдБ рдХрд╕рд░реА Azure рдХреНрд▓рд╛рдЙрдбрдорд╛ VM рдХреЛ рдЖрдХрд╛рд░ рдмрджрд▓реНрдирдХреЛ рд▓рд╛рдЧрд┐ PowerShell рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рд╕рд╛рдереИ VM рд░ рдпрд╕рд╕рдБрдЧ рд╕рдореНрдмрдиреНрдзрд┐рдд рд╡рд╕реНрддреБрд╣рд░реВ рдореЗрдЯрд╛рдЙрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рднрдиреЗрд░ рд╣реЗрд░реНрдиреЗрдЫреМрдВред

PowerShell рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ Azure VMs рдкрд░рд┐рдорд╛рд░реНрдЬрди рд░ рдореЗрдЯрд╛рдЙрдиреЗ

рдорд╣рддреНрд╡рдкреВрд░реНрдг! рдХрд╛рдордХреЛ рд▓рд╛рдЧрд┐ рддрдпрд╛рд░реА рдЧрд░реНрди рд╕реНрдпрд╛рдирд┐рдЯрд╛рдЗрдЬрд░рд▓реЗ рд╣рд╛рдд рдкреБрдЫреНрди рдирдмрд┐рд░реНрд╕рдиреБрд╣реЛрд╕реН:

  • рддрдкрд╛рдИрд▓рд╛рдИ рдореЛрдбреНрдпреБрд▓ рдЪрд╛рд╣рд┐рдиреНрдЫ Azure PowerShell рдореЛрдбреНрдпреБрд▓ - рдпреЛ рдЖрджреЗрд╢ рд╕рдВрдЧ PowerShell рдЧреНрдпрд╛рд▓реЗрд░реА рдмрд╛рдЯ рдбрд╛рдЙрдирд▓реЛрдб рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ Install-Module Az.
  • рддрдкрд╛рдИрдВрд▓реЗ Azure рдХреНрд▓рд╛рдЙрдбрдорд╛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ рдЬрд╣рд╛рдБ рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рди рдЖрджреЗрд╢ рдЪрд▓рд╛рдПрд░ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдЫ Connect-AzAccount.

рдкрд╣рд┐рд▓реЗ, рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реМрдВ рдЬрд╕рд▓реЗ Azure VM рд░рд┐рд╕рд╛рдЗрдЬ рдЧрд░реНрдиреЗрдЫред VS рдХреЛрдб рдЦреЛрд▓реМрдВ рд░ рдПрдЙрдЯрд╛ рдирдпрд╛рдБ PowerShell рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдЪрдд рдЧрд░реМрдВ рд░рд┐рд╕рд╛рдЗрдЬ-AzVirtualMachine.ps1 - рдЙрджрд╛рд╣рд░рдгрдХреЛ рдкреНрд░рдЧрддрд┐рдХреЛ рд░реВрдкрдорд╛ рд╣рд╛рдореА рдпрд╕рдорд╛ рдХреЛрдбрдХрд╛ рдЯреБрдХреНрд░рд╛рд╣рд░реВ рдердкреНрдиреЗрдЫреМрдВред

рд╣рд╛рдореА рдЙрдкрд▓рдмреНрдз VM рдЖрдХрд╛рд░рд╣рд░реВ рдЕрдиреБрд░реЛрдз рдЧрд░реНрдЫреМрдВ

рддрдкрд╛рдИрдВрд▓реЗ VM рдЖрдХрд╛рд░ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрдиреБ рдЕрдШрд┐, рддрдкрд╛рдИрдВрд▓реЗ Azure рдХреНрд▓рд╛рдЙрдбрдорд╛ рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рдирд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╕реНрд╡реАрдХрд╛рд░реНрдп рдЖрдХрд╛рд░рд╣рд░реВ рдХреЗ рд╣реЛ рднрдиреЗрд░ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрди рдЖрд╡рд╢реНрдпрдХ рдЫред рдпреЛ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдЖрджреЗрд╢ рдЪрд▓рд╛рдЙрди рдЖрд╡рд╢реНрдпрдХ рдЫ Get-AzVMSize.

рддреНрдпрд╕реИрд▓реЗ рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рдирдХреЛ рд▓рд╛рдЧрд┐ devvm01 рд╕реНрд░реЛрдд рд╕рдореВрд╣рдмрд╛рдЯ dev рд╣рд╛рдореА рд╕рдмреИ рд╕рдореНрднрд╛рд╡рд┐рдд рд╕реНрд╡реАрдХрд╛рд░реНрдп рдЖрдХрд╛рд░рд╣рд░реВ рдЕрдиреБрд░реЛрдз рдЧрд░реНрджрдЫреМрдВ:

Get-AzVMSize -ResourceGroupName dev -VMName devvm01

(рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдорд╕реНрдпрд╛рд╣рд░реВрдорд╛, рдЕрд╡рд╢реНрдп рдкрдирд┐, рдпрд╕рдХреЛ рд╕рдЯреНрдЯрд╛ ResourceGroupName=dev ╨╕ VMName=devvm01 рддрдкрд╛рдИрдВрд▓реЗ рдпреА рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдЖрдлреНрдиреИ рдорд╛рдирд╣рд░реВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрдиреБрд╣реБрдиреЗрдЫред)

рдЖрджреЗрд╢рд▓реЗ рдпреЛ рдЬрд╕реНрддреИ рдХреЗрд╣рд┐ рдлрд░реНрдХрд╛рдЙрдиреЗрдЫ:

PowerShell рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ Azure VMs рдкрд░рд┐рдорд╛рд░реНрдЬрди рд░ рдореЗрдЯрд╛рдЙрдиреЗ

рдпреА рд╕рдмреИ рд╕рдореНрднрд╛рд╡рд┐рдд рд╕рд╛рдЗрдЬ рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ рд╣реБрдиреН рдЬреБрди рджрд┐рдЗрдПрдХреЛ рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рдирдХреЛ рд▓рд╛рдЧрд┐ рд╕реЗрдЯ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред

рдХрд╛рд░рдХреЛ рдЖрдХрд╛рд░ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реМрдВ

рдЙрджрд╛рд╣рд░рдг рдХреЛ рд▓рд╛рдЧреА, рд╣рд╛рдореА рдирдпрд╛рдБ рдЖрдХрд╛рд░ рдорд╛ рд░рд┐рд╕рд╛рдЗрдЬ рдЧрд░реНрдиреЗрдЫреМрдВ рдорд╛рдирдХ_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 рдореЗрдЯрд╛рдЙрдиреЗ рдмрд╛рд░реЗ рдХреЗ рд╣реЛ?

рдореЗрдЯрд╛рдЙрдБрджрд╛, рд╕рдмреИ рдХреБрд░рд╛ рддреНрдпрддрд┐ рд╕рд░рд▓ рд░ рд╕реАрдзрд╛ рд╣реБрдБрджреИрди рдЬрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫред рдЖрдЦрд┐рд░, рдпреЛ рдореЗрд╕рд┐рдирд╕рдБрдЧ рд╕рдореНрдмрдиреНрдзрд┐рдд рдзреЗрд░реИ рд╕реНрд░реЛрддрд╣рд░реВ рд╣рдЯрд╛рдЙрди рдЖрд╡рд╢реНрдпрдХ рдЫ, рдЬрд╕рдорд╛:

  • рдмреБрдЯ рдирд┐рджрд╛рди рднрдгреНрдбрд╛рд░рдг рдХрдиреНрдЯреЗрдирд░
  • рдиреЗрдЯрд╡рд░реНрдХ рдЗрдиреНрдЯрд░рдлреЗрд╕
  • рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЖрдИрдкреА рдареЗрдЧрд╛рдирд╛рд╣рд░реВ
  • рдкреНрд░рдгрд╛рд▓реА рдбрд┐рд╕реНрдХ рд░ рдмреНрд▓рдм рдЬрд╣рд╛рдБ рдпрд╕рдХреЛ рд╕реНрдерд┐рддрд┐ рднрдгреНрдбрд╛рд░рдг рдЧрд░рд┐рдПрдХреЛ рдЫ
  • рдбрд╛рдЯрд╛ рдбрд┐рд╕реНрдХ

рддреНрдпрд╕рдХрд╛рд░рдг, рд╣рд╛рдореА рдПрдХ рдкреНрд░рдХрд╛рд░реНрдп рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреЗрдЫреМрдВ рд░ рдпрд╕рд▓рд╛рдИ рдХрд▓ рдЧрд░реНрдиреЗрдЫреМрдВ 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

рдиреЗрдЯрд╡рд░реНрдХ рдЗрдиреНрдЯрд░рдлреЗрд╕ рд░ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЖрдИрдкреА рдареЗрдЧрд╛рдирд╛ рд╣рдЯрд╛рдЙрдБрджреИ

рд╣рд╛рдореНрд░реЛ VM рд╕рдБрдЧ рдЕрдЭреИ рдкрдирд┐ рдПрдЙрдЯрд╛ (рд╡рд╛ рдзреЗрд░реИ) рдиреЗрдЯрд╡рд░реНрдХ рдЗрдиреНрдЯрд░рдлреЗрд╕рд╣рд░реВ (NICs) рдЫрдиреН - рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд░реВрдкрдорд╛ рд╣рдЯрд╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐, рд╕рдореНрдкрддреНрддреА рдорд╛рд░реНрдлрдд рдЬрд╛рдФрдВред NetworkInterfaces рд╣рд╛рдореНрд░реЛ VM рд╡рд╕реНрддреБ рд░ рдЖрджреЗрд╢рдХреЛ рд╕рд╛рде NIC рдореЗрдЯрд╛рдЙрдиреБрд╣реЛрд╕реН Remove-AzNetworkInterfaceред рдпрджрд┐ рддреНрдпрд╣рд╛рдБ рдПрдХ рднрдиреНрджрд╛ рдмрдвреА рдиреЗрдЯрд╡рд░реНрдХ рдЗрдиреНрдЯрд░рдлреЗрд╕ рдЫ рднрдиреЗ, рд╣рд╛рдореА рд▓реБрдк рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫреМрдВред рдПрдХреИ рд╕рдордпрдорд╛, рдкреНрд░рддреНрдпреЗрдХ рдПрдирдЖрдИрд╕реАрдХреЛ рд▓рд╛рдЧрд┐ рд╣рд╛рдореА рд╕рдореНрдкрддреНрддрд┐ рдЬрд╛рдБрдЪ рдЧрд░реНрдиреЗрдЫреМрдВ 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
        }
    }
}

рдкреНрд░рдгрд╛рд▓реА рдбрд┐рд╕реНрдХ рд╣рдЯрд╛рдЙрдБрджреИ

рдУрдПрд╕ рдбрд┐рд╕реНрдХ рдПрдХ рдмреНрд▓рдм рд╣реЛ, рдЬрд╕рдХреЛ рд▓рд╛рдЧрд┐ рдпрд╕рд▓рд╛рдИ рдореЗрдЯрд╛рдЙрди рдЖрджреЗрд╢ рдЫ 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]
    }
}

рд░ рдЕрдм "рд╣рд╛рдореА рд╕реБрдЦрдж рдЕрдиреНрддреНрдпрдорд╛ рдкреБрдЧреЗрдХрд╛ рдЫреМрдВ!" рдЕрдм рд╣рд╛рдореАрд▓реЗ рдпреА рд╕рдмреИ рдЯреБрдХреНрд░рд╛рд╣рд░реВрдмрд╛рдЯ рдПрдХрд▓ рдкреВрд░реИ рдЬрдореНрдорд╛ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред рджрдпрд╛рд▓реБ рд▓реЗрдЦрдХ рдПрдбрдо рдмрд░реНрдЯреНрд░рд╛рдорд▓реЗ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрд▓рд╛рдИ рдЖрдзрд╛ рдмрд╛рдЯреЛрдорд╛ рднреЗрдЯреЗ рд░ рдЖрдлреИрдВ рдЧрд░реЗред рдпрд╣рд╛рдБ рднрдирд┐рдПрдХреЛ рдЕрдиреНрддрд┐рдо рд▓рд┐рдкрд┐рдХреЛ рд▓рд┐рдЩреНрдХ рдЫ рд╣рдЯрд╛рдЙрдиреБрд╣реЛрд╕реН-AzrVirtualMachine.ps1:

тЖТ GitHub

рдорд▓рд╛рдИ рдЖрд╢рд╛ рдЫ рдХрд┐ рддрдкрд╛рдИрдВрд▓реЗ Azure VMs рд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрджрд╛ рддрдкрд╛рдИрдВрдХреЛ рдкреНрд░рдпрд╛рд╕, рд╕рдордп, рд░ рдкреИрд╕рд╛ рдмрдЪрдд рдЧрд░реНрди рдпреА рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╕реБрдЭрд╛рд╡рд╣рд░реВ рдЙрдкрдпреЛрдЧреА рд╣реБрдиреЗрдЫрдиреНред

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди