PowerShell рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░, рдЗрдиреНрдЬрд┐рдирд┐рдпрд░рд╣рд░реВ рд░ IT рдкреНрд░рд╢рд╛рд╕рдХрд╣рд░реВрд▓реЗ рдЕрди-рдкреНрд░рд┐рдорд╛рдЗрд╕реЗрд╕рдорд╛ рдорд╛рддреНрд░ рд╣реЛрдЗрди, рдХреНрд▓рд╛рдЙрдб рдкреВрд░реНрд╡рд╛рдзрд╛рд░рд╣рд░реВрдорд╛ рдкрдирд┐, рд╡рд┐рд╢реЗрд╖ рдЧрд░реА Azure рд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрджрд╛ рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░реНрдпрд╣рд░реВ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЧрд░реНрдЫрдиреНред рдХреЗрд╣рд┐ рдЕрд╡рд╕реНрдерд╛рдорд╛, PowerShell рдорд╛рд░реНрдлрдд рдХрд╛рдо рдЧрд░реНрдиреБ Azure рдкреЛрд░реНрдЯрд▓ рдорд╛рд░реНрдлрдд рдХрд╛рдо рдЧрд░реНрдиреБ рднрдиреНрджрд╛ рдзреЗрд░реИ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд░ рдЫрд┐рдЯреЛ рдЫред рдпрд╕рдХреЛ рдХреНрд░рд╕-рдкреНрд▓реЗрдЯрдлрд░реНрдо рдкреНрд░рдХреГрддрд┐рдХреЛ рд▓рд╛рдЧрд┐ рдзрдиреНрдпрд╡рд╛рдж, PowerShell рдХреБрдиреИ рдкрдирд┐ рдЕрдкрд░реЗрдЯрд┐рдЩ рд╕рд┐рд╕реНрдЯрдордорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред
рдЪрд╛рд╣реЗ рддрдкрд╛рдЗрдБ Ubuntu, Red Hat, рд╡рд╛ Windows рдЪрд▓рд╛рдЙрдБрджреИ рд╣реБрдиреБрд╣реБрдиреНрдЫ, PowerShell рд▓реЗ рддрдкрд╛рдЗрдБрд▓рд╛рдИ рддрдкрд╛рдЗрдБрдХреЛ рдХреНрд▓рд╛рдЙрдб рд╕реНрд░реЛрддрд╣рд░реВ рдирд┐рдпрдиреНрддреНрд░рдг рдЧрд░реНрди рдорджреНрджрдд рдЧрд░реНрди рд╕рдХреНрдЫред рдореЛрдбреНрдпреБрд▓ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИ
рдпрд╕ рд▓реЗрдЦрдорд╛, рд╣рд╛рдореА рддрдкрд╛рдЗрдБ рдХрд╕рд░реА Azure рдХреНрд▓рд╛рдЙрдбрдорд╛ VM рдХреЛ рдЖрдХрд╛рд░ рдмрджрд▓реНрдирдХреЛ рд▓рд╛рдЧрд┐ PowerShell рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рд╕рд╛рдереИ VM рд░ рдпрд╕рд╕рдБрдЧ рд╕рдореНрдмрдиреНрдзрд┐рдд рд╡рд╕реНрддреБрд╣рд░реВ рдореЗрдЯрд╛рдЙрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рднрдиреЗрд░ рд╣реЗрд░реНрдиреЗрдЫреМрдВред
рдорд╣рддреНрд╡рдкреВрд░реНрдг! рдХрд╛рдордХреЛ рд▓рд╛рдЧрд┐ рддрдпрд╛рд░реА рдЧрд░реНрди рд╕реНрдпрд╛рдирд┐рдЯрд╛рдЗрдЬрд░рд▓реЗ рд╣рд╛рдд рдкреБрдЫреНрди рдирдмрд┐рд░реНрд╕рдиреБрд╣реЛрд╕реН:
- рддрдкрд╛рдИрд▓рд╛рдИ рдореЛрдбреНрдпреБрд▓ рдЪрд╛рд╣рд┐рдиреНрдЫ 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 рддрдкрд╛рдИрдВрд▓реЗ рдпреА рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдЖрдлреНрдиреИ рдорд╛рдирд╣рд░реВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрдиреБрд╣реБрдиреЗрдЫред)
рдЖрджреЗрд╢рд▓реЗ рдпреЛ рдЬрд╕реНрддреИ рдХреЗрд╣рд┐ рдлрд░реНрдХрд╛рдЙрдиреЗрдЫ:
рдпреА рд╕рдмреИ рд╕рдореНрднрд╛рд╡рд┐рдд рд╕рд╛рдЗрдЬ рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ рд╣реБрдиреН рдЬреБрди рджрд┐рдЗрдПрдХреЛ рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рдирдХреЛ рд▓рд╛рдЧрд┐ рд╕реЗрдЯ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред
рдХрд╛рд░рдХреЛ рдЖрдХрд╛рд░ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реМрдВ
рдЙрджрд╛рд╣рд░рдг рдХреЛ рд▓рд╛рдЧреА, рд╣рд╛рдореА рдирдпрд╛рдБ рдЖрдХрд╛рд░ рдорд╛ рд░рд┐рд╕рд╛рдЗрдЬ рдЧрд░реНрдиреЗрдЫреМрдВ рдорд╛рдирдХ_B1ls - рдК рдорд╛рдерд┐рдХреЛ рд╕реВрдЪреАрдорд╛ рдкрд╣рд┐рд▓реЛ рд╕реНрдерд╛рдирдорд╛ рдЫред (рд╡рд╛рд╕реНрддрд╡рд┐рдХ-рдЬреАрд╡рди рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрдорд╛, рдирд┐рд╕реНрд╕рдиреНрджреЗрд╣, рддрдкрд╛рдИрд▓рд╛рдИ рдЪрд╛рд╣рд┐рдиреЗ рдЬреБрдирд╕реБрдХреИ рд╕рд╛рдЗрдЬ рдЫрдиреМрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реНред)
- рдкрд╣рд┐рд▓реЗ рдЖрджреЗрд╢ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░
Get-AzVM
рд╣рд╛рдореАрд▓реЗ рд╣рд╛рдореНрд░реЛ рд╡рд╕реНрддреБ (рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рди) рдХреЛ рдмрд╛рд░реЗ рдЬрд╛рдирдХрд╛рд░реА рднреЗрд░рд┐рдПрдмрд▓рдорд╛ рднрдгреНрдбрд╛рд░ рдЧрд░реЗрд░ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдЫреМрдВ$virtualMachine
:$virtualMachine = Get-AzVM -ResourceGroupName dev -VMName devvm01
- рддреНрдпрд╕рдкрдЫрд┐ рд╣рд╛рдореА рдпрд╕ рд╡рд╕реНрддреБрдмрд╛рдЯ рд╕рдореНрдкрддреНрддрд┐ рд▓рд┐рдиреНрдЫреМрдВ
.HardwareProfile.VmSize
рд░ рдЗрдЪреНрдЫрд┐рдд рдирдпрд╛рдБ рдорд╛рди рд╕реЗрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН:$virtualMachine.HardwareProfile.VmSize = "Standard_B1ls"
- рд░ рдЕрдм рд╣рд╛рдореА рдХреЗрд╡рд▓ VM рдЕрдкрдбреЗрдЯ рдЖрджреЗрд╢ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрдЫреМрдВ -
Update-AzVm
:Update-AzVM -VM devvm01 -ResourceGroupName dev
- рд╣рд╛рдореА рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрдЫреМрдВ рдХрд┐ рд╕рдмреИ рдХреБрд░рд╛ рд░рд╛рдореНрд░рд░реА рдЧрдпреЛ - рдпреЛ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐, рд╣рд╛рдореА рдлреЗрд░рд┐ рд╣рд╛рдореНрд░реЛ рд╡рд╕реНрддреБрдХреЛ рдмрд╛рд░реЗрдорд╛ рдЬрд╛рдирдХрд╛рд░реА рдЕрдиреБрд░реЛрдз рдЧрд░реНрдЫреМрдВ рд░ рд╕рдореНрдкрддреНрддрд┐ рд╣реЗрд░реНрдиреБрд╣реЛрд╕реН
$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 рдореЗрдЯрд╛рдЗрдиреНрдЫ, рдпреЛ рдХрдиреНрдЯреЗрдирд░ рдпрд╕рдХреЛ рдЕрдм рдЙрджреНрджреЗрд╢реНрдпрд╣реАрди рдЕрд╕реНрддрд┐рддреНрд╡ рдЬрд╛рд░реА рд░рд╛рдЦреНрди рдЫреЛрдбрд┐рдиреНрдЫред рдпреЛ рдЕрд╡рд╕реНрдерд╛ рд╕рдЪреНрдпрд╛рдФрдВред
- рдкрд╣рд┐рд▓реЗ, рдпреЛ рдХрдиреНрдЯреЗрдирд░ рдХреБрди рднрдгреНрдбрд╛рд░рдг рдЦрд╛рддрд╛рд╕рдБрдЧ рд╕рдореНрдмрдиреНрдзрд┐рдд рдЫ рднрдиреЗрд░ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрдиреБрд╣реЛрд╕реН - рдпрд╕рдХреЛ рд▓рд╛рдЧрд┐ рд╣рд╛рдореАрд▓реЗ рд╕рдореНрдкрддреНрддрд┐ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ
storageUri
рд╡рд╕реНрддреБрдХреЛ рдЖрдиреНрджреНрд░рд╛рдорд╛DiagnosticsProfile
рд╣рд╛рдореНрд░реЛ VMред рдпрд╕рдХреЛ рд▓рд╛рдЧрд┐ рдо рдпреЛ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫреБ:$diagSa = [regex]::match($vm.DiagnosticsProfile.bootDiagnostics.storageUri, '^http[s]?://(.+?)\.').groups[1].value
- рдЕрдм рддрдкрд╛рдИрдВрд▓реЗ рдХрдиреНрдЯреЗрдирд░рдХреЛ рдирд╛рдо рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрди рдЖрд╡рд╢реНрдпрдХ рдЫ, рд░ рдпрд╕рдХреЛ рд▓рд╛рдЧрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдЖрджреЗрд╢ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ 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)
- рдЕрд░реНрдХреЛ, рд╣рд╛рдореАрд▓реЗ рд╕рдВрд╕рд╛рдзрди рд╕рдореВрд╣рдХреЛ рдирд╛рдо рдкрд╛рдЙрдБрдЫреМрдВ рдЬрд╕рдорд╛ рдХрдиреНрдЯреЗрдирд░ рд╕рдореНрдмрдиреНрдзрд┐рдд рдЫ:
$diagSaRg = (Get-AzStorageAccount | where { $_.StorageAccountName -eq $diagSa }).ResourceGroupName
- рд░ рдЕрдм рд╣рд╛рдореАрд╕рдБрдЧ рдЖрджреЗрд╢рдХреЛ рд╕рд╛рде рдХрдиреНрдЯреЗрдирд░ рдореЗрдЯрд╛рдЙрди рдЖрд╡рд╢реНрдпрдХ рд╕рдмреИ рдЫ
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:
тЖТ
рдорд▓рд╛рдИ рдЖрд╢рд╛ рдЫ рдХрд┐ рддрдкрд╛рдИрдВрд▓реЗ Azure VMs рд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрджрд╛ рддрдкрд╛рдИрдВрдХреЛ рдкреНрд░рдпрд╛рд╕, рд╕рдордп, рд░ рдкреИрд╕рд╛ рдмрдЪрдд рдЧрд░реНрди рдпреА рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╕реБрдЭрд╛рд╡рд╣рд░реВ рдЙрдкрдпреЛрдЧреА рд╣реБрдиреЗрдЫрдиреНред
рд╕реНрд░реЛрдд: www.habr.com