ืฉื ื” ื•ื”ืกืจ Azure VMs ื‘ืืžืฆืขื•ืช PowerShell

ื‘ืืžืฆืขื•ืช PowerShell, ืžื”ื ื“ืกื™ื ื•ืžื ื”ืœื™ IT ืžืฆืœื™ื—ื™ื ืœื”ืคื•ืš ืžืฉื™ืžื•ืช ืฉื•ื ื•ืช ืœืื•ื˜ื•ืžื˜ื™ื•ืช ื›ืืฉืจ ืขื•ื‘ื“ื™ื ืœื ืจืง ืขื ืžืงื•ืžื™ื™ื, ืืœื ื’ื ืขื ืชืฉืชื™ื•ืช ืขื ืŸ, ื‘ืคืจื˜ ืขื Azure. ื‘ืžืงืจื™ื ืžืกื•ื™ืžื™ื, ื”ืขื‘ื•ื“ื” ื“ืจืš PowerShell ื”ื™ื ื”ืจื‘ื” ื™ื•ืชืจ ื ื•ื—ื” ื•ืžื”ื™ืจื” ืžืืฉืจ ืขื‘ื•ื“ื” ื“ืจืš ืคื•ืจื˜ืœ Azure. ื”ื•ื“ื•ืช ืœืื•ืคื™ ื”ืคืœื˜ืคื•ืจืžื” ืฉืœื•, PowerShell ื™ื›ื•ืœ ืœืฉืžืฉ ื‘ื›ืœ ืžืขืจื›ืช ื”ืคืขืœื”.

ื‘ื™ืŸ ืื ืืชื” ืžืคืขื™ืœ ืื•ื‘ื•ื ื˜ื•, Red Hat ืื• Windows, PowerShell ื™ื›ื•ืœื” ืœืขื–ื•ืจ ืœืš ืœืฉืœื•ื˜ ื‘ืžืฉืื‘ื™ ื”ืขื ืŸ ืฉืœืš. ืฉื™ืžื•ืฉ ื‘ืžื•ื“ื•ืœ Azure PowerShell, ืœื“ื•ื’ืžื”, ืืชื” ื™ื›ื•ืœ ืœื”ื’ื“ื™ืจ ื›ืœ ืžืืคื™ื™ื ื™ื ืฉืœ ืžื›ื•ื ื•ืช ื•ื™ืจื˜ื•ืืœื™ื•ืช.

ื‘ืžืืžืจ ื–ื”, ื ื‘ื—ืŸ ื›ื™ืฆื“ ื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘-PowerShell ื›ื“ื™ ืœืฉื ื•ืช ืืช ื’ื•ื“ืœ ื”-VM ื‘ืขื ืŸ ื”-Azure, ื›ืžื• ื’ื ืœืžื—ื•ืง VM ื•ื”ืื•ื‘ื™ื™ืงื˜ื™ื ื”ืžืฉื•ื™ื›ื™ื ืœื•.

ืฉื ื” ื•ื”ืกืจ Azure VMs ื‘ืืžืฆืขื•ืช PowerShell

ื—ืฉื•ื‘! ืืœ ืชืฉื›ื—ื• ืœื ื’ื‘ ืืช ื”ื™ื“ื™ื™ื ืขื ื—ื•ืžืจ ื—ื™ื˜ื•ื™ ื›ื“ื™ ืœื”ืชื›ื•ื ืŸ ืœืขื‘ื•ื“ื”:

  • ืชืฆื˜ืจืš ืžื•ื“ื•ืœ ืžื•ื“ื•ืœ Azure PowerShell - ื ื™ืชืŸ ืœื”ื•ืจื™ื“ ืื•ืชื• ืžื’ืœืจื™ื™ืช PowerShell ืขื ื”ืคืงื•ื“ื” Install-Module Az.
  • ืขืœื™ืš ืœื‘ืฆืข ืื™ืžื•ืช ื‘ืขื ืŸ ื”-Azure ืฉื‘ื• ืคื•ืขืœ ื”ืžื›ื•ื ื” ื”ื•ื™ืจื˜ื•ืืœื™ืช ืขืœ ื™ื“ื™ ื”ืคืขืœืช ื”ืคืงื•ื“ื” Connect-AzAccount.

ืจืืฉื™ืช, ื‘ื•ืื• ื ื™ืฆื•ืจ ืกืงืจื™ืคื˜ ืฉื™ืฉื ื” ืืช ื’ื•ื“ืœื• ืฉืœ Azure VM. ื‘ื•ืื• ื ืคืชื— VS Code ื•ื ืฉืžื•ืจ ืกืงืจื™ืคื˜ PowerShell ื—ื“ืฉ ื‘ืฉื Resize-AzVirtualMachine.ps1 - ื ื•ืกื™ืฃ ืœื• ืคื™ืกื•ืช ืงื•ื“ ื›ื›ืœ ืฉื”ื“ื•ื’ืžื” ืชืชืงื“ื.

ืื ื• ืžื‘ืงืฉื™ื ืืช ื’ื“ืœื™ ื”-VM ื”ื–ืžื™ื ื™ื

ืœืคื ื™ ืฉืชืฉื ื” ืืช ื’ื•ื“ืœ ื”-VM, ืขืœื™ืš ืœื‘ืจืจ ืžื”ื ื”ื’ื“ืœื™ื ื”ืžืงื•ื‘ืœื™ื ืขื‘ื•ืจ ืžื›ื•ื ื•ืช ื•ื™ืจื˜ื•ืืœื™ื•ืช ื‘ืขื ืŸ Azure. ืœืฉื ื›ืš ืขืœื™ืš ืœื”ืคืขื™ืœ ืืช ื”ืคืงื•ื“ื” Get-AzVMSize.

ืื– ืœืžื›ื•ื ื” ื”ื•ื™ืจื˜ื•ืืœื™ืช devvm01 ืžืงื‘ื•ืฆืช ืžืฉืื‘ื™ื dev ืื ื• ืžื‘ืงืฉื™ื ืืช ื›ืœ ื”ื’ื“ืœื™ื ื”ืžืงื•ื‘ืœื™ื ื”ืืคืฉืจื™ื™ื:

Get-AzVMSize -ResourceGroupName dev -VMName devvm01

(ื‘ื‘ืขื™ื•ืช ืืžื™ืชื™ื•ืช, ื›ืžื•ื‘ืŸ, ื‘ืžืงื•ื ResourceGroupName=dev ะธ VMName=devvm01 ืชืฆื™ื™ืŸ ืขืจื›ื™ื ืžืฉืœืš ืขื‘ื•ืจ ืคืจืžื˜ืจื™ื ืืœื”.)

ื”ืคืงื•ื“ื” ืชื—ื–ื™ืจ ืžืฉื”ื• ื›ื–ื”:

ืฉื ื” ื•ื”ืกืจ Azure VMs ื‘ืืžืฆืขื•ืช PowerShell

ื›ืœ ืืœื• ื”ืŸ ืืคืฉืจื•ื™ื•ืช ื”ื’ื•ื“ืœ ื”ืืคืฉืจื™ื•ืช ืฉื ื™ืชืŸ ืœื”ื’ื“ื™ืจ ืขื‘ื•ืจ ืžื›ื•ื ื” ื•ื™ืจื˜ื•ืืœื™ืช ื ืชื•ื ื”.

ื‘ื•ื ื ืฉื ื” ืืช ื’ื•ื“ืœ ื”ืžื›ื•ื ื™ืช

ืœื“ื•ื’ืžื”, ื ืฉื ื” ืืช ื”ื’ื•ื“ืœ ืœื’ื•ื“ืœ ื—ื“ืฉ Standard_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

ืื ื ืจืื” ืฉื Standard_B1ls - ื–ื” ืื•ืžืจ ืฉื”ื›ืœ ืชืงื™ืŸ, ื’ื•ื“ืœ ื”ืžื›ื•ื ื™ืช ื”ืฉืชื ื”. ืืชื” ื™ื›ื•ืœ ืœืœื›ืช ืจื—ื•ืง ื™ื•ืชืจ ื•ืœื”ืชื‘ืกืก ืขืœ ื”ื”ืฆืœื—ื” ืฉืœืš ืขืœ ื™ื“ื™ ืฉื™ื ื•ื™ ื’ื•ื“ืœ ืฉืœ ืžืกืคืจ VM ื‘ื•-ื–ืžื ื™ืช ื‘ืืžืฆืขื•ืช ืžืขืจืš.

ืžื” ืœื’ื‘ื™ ืžื—ื™ืงืช VM ื‘-Azure?

ืขื ืžื—ื™ืงื”, ืœื ื”ื›ืœ ืคืฉื•ื˜ ื•ืคืฉื•ื˜ ื›ืžื• ืฉื–ื” ื ืจืื”. ืื—ืจื™ ื”ื›ืœ, ื™ืฉ ืฆื•ืจืš ืœื”ืกื™ืจ ืžืกืคืจ ืžืฉืื‘ื™ื ื”ืงืฉื•ืจื™ื ืœืžื›ื•ื ื” ื–ื•, ื›ื•ืœืœ:

  • ืžื™ื›ืœื™ ืื—ืกื•ืŸ ืฉืœ ืื‘ื—ื•ืŸ ืืชื—ื•ืœ
  • ืžืžืฉืงื™ ืจืฉืช
  • ื›ืชื•ื‘ื•ืช IP ืฆื™ื‘ื•ืจื™ื•ืช
  • ื“ื™ืกืง ืžืขืจื›ืช ื•ื‘ืชื ืฉื‘ื• ื”ืกื˜ื˜ื•ืก ืฉืœื• ืžืื•ื—ืกืŸ
  • ื“ื™ืกืงื™ ื ืชื•ื ื™ื

ืœื›ืŸ, ื ื™ืฆื•ืจ ืคื•ื ืงืฆื™ื” ื•ื ืงืจื ืœื” Remove-AzrVirtualMachine - ื•ื”ื•ื ื™ืžื—ืง ืœื ืจืง ืืช Azure VM, ืืœื ื’ื ืืช ื›ืœ ื”ืืžื•ืจ ืœืขื™ืœ.

ืื ื—ื ื• ื”ื•ืœื›ื™ื ื‘ื“ืจืš ื”ืจื’ื™ืœื” ื•ืžืงื‘ืœื™ื ืชื—ื™ืœื” ืืช ื”ืื•ื‘ื™ื™ืงื˜ ืฉืœื ื• (VM) ื‘ืืžืฆืขื•ืช ื”ืคืงื•ื“ื” Get-AzVm. ืœื“ื•ื’ืžื”, ืชืŸ ืœื–ื” ืœื”ื™ื•ืช ืžื›ื•ื ื™ืช WINSRV19 ืžืงื‘ื•ืฆืช ืžืฉืื‘ื™ื MyTestVMs.

ื‘ื•ืื• ื ืฉืžื•ืจ ืืช ื”ืื•ื‘ื™ื™ืงื˜ ื”ื–ื” ื™ื—ื“ ืขื ื›ืœ ื”ืžืืคื™ื™ื ื™ื ืฉืœื• ืœืžืฉืชื ื” $vm:

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

ื”ืกืจืช ื”ืžื™ื›ืœ ืขื ืงื‘ืฆื™ ืื‘ื—ื•ืŸ ืืชื—ื•ืœ

ื‘ืขืช ื™ืฆื™ืจืช VM ื‘-Azure, ื”ืžืฉืชืžืฉ ืžืชื‘ืงืฉ ืœื™ืฆื•ืจ ื’ื ืงื•ื ื˜ื™ื™ื ืจ ืœืื—ืกื•ืŸ ืื‘ื—ื•ืŸ ืืชื—ื•ืœ (ืžื™ื›ืœ ืืชื—ื•ืœ ืื‘ื—ื•ืŸ), ื›ืš ืฉืื ื™ืฉ ื‘ืขื™ื•ืช ื‘ืืชื—ื•ืœ, ื™ืฉ ืœืžื” ืœืคื ื•ืช ืœืคืชืจื•ืŸ ื‘ืขื™ื•ืช. ืขื ื–ืืช, ื›ืืฉืจ ื”-VM ื ืžื—ืง, ืžื™ื›ืœ ื–ื” ื ืฉืืจ ืœื”ืžืฉื™ืš ืืช ืงื™ื•ืžื• ื—ืกืจ ื”ืชื›ืœื™ืช ื›ืขืช. ื‘ื•ืื• ื ืชืงืŸ ืืช ื”ืžืฆื‘ ื”ื–ื”.

  1. ืจืืฉื™ืช, ื‘ื•ืื• ื ื’ืœื” ืœืื™ื–ื” ื—ืฉื‘ื•ืŸ ืื—ืกื•ืŸ ืฉื™ื™ืš ื”ืžื™ื›ืœ ื”ื–ื” โ€“ ืœืฉื ื›ืš ืขืœื™ื ื• ืœืžืฆื•ื ืืช ื”ื ื›ืก storageUri ื‘ืžืขื™ื™ื ืฉืœ ื”ื—ืคืฅ DiagnosticsProfile ื”-VM ืฉืœื ื•. ืœืฉื ื›ืš ืื ื™ ืžืฉืชืžืฉ ื‘ื‘ื™ื˜ื•ื™ ื”ืจื’ื•ืœืจื™ ื”ื–ื”:
    $diagSa = [regex]::match($vm.DiagnosticsProfile.bootDiagnostics.storageUri, '^http[s]?://(.+?)\.').groups[1].value
  2. ื›ืขืช ืขืœื™ืš ืœื‘ืจืจ ืืช ืฉื ื”ืงื•ื ื˜ื™ื™ื ืจ, ื•ืœืฉื ื›ืš ืขืœื™ืš ืœืงื‘ืœ ืืช ืžื–ื”ื” ื”-VM ื‘ืืžืฆืขื•ืช ื”ืคืงื•ื“ื” 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 ืฉืœื ื• ืขื“ื™ื™ืŸ ื™ืฉ ืžืžืฉืง ืจืฉืช ืื—ื“ (ืื• ืืคื™ืœื• ื›ืžื”) - ื›ื“ื™ ืœื”ืกื™ืจ ืื•ืชื ื›ืžื™ื•ืชืจื™ื, ื‘ื•ืื• ื ืขื‘ื•ืจ ืขืœ ื”ื ื›ืก NetworkInterfaces ืื•ื‘ื™ื™ืงื˜ ื”-VM ืฉืœื ื• ื•ืžื—ืง ืืช ื”-NIC ืขื ื”ืคืงื•ื“ื” Remove-AzNetworkInterface. ื‘ืžืงืจื” ืฉื™ืฉ ื™ื•ืชืจ ืžืžืžืฉืง ืจืฉืช ืื—ื“, ืื ื• ืžืฉืชืžืฉื™ื ื‘ืœื•ืœืื”. ื‘ืžืงื‘ื™ืœ, ืขื‘ื•ืจ ื›ืœ NIC ื ื‘ื“ื•ืง ืืช ื”ื ื›ืก IpConfiguration ื›ื“ื™ ืœืงื‘ื•ืข ืื ืœืžืžืฉืง ื™ืฉ ื›ืชื•ื‘ืช IP ืฆื™ื‘ื•ืจื™ืช. ืื ื ืžืฆื ืื—ื“, ื ืกื™ืจ ืื•ืชื• ืขื ื”ืคืงื•ื“ื” Remove-AzPublicIpAddress.

ื”ื ื” ื“ื•ื’ืžื” ืœืงื•ื“ ื›ื–ื” ื‘ื“ื™ื•ืง, ืฉื‘ื• ืื ื—ื ื• ืžืกืชื›ืœื™ื ืขืœ ื›ืœ ื”-NICs ื‘ืœื•ืœืื”, ืžื•ื—ืงื™ื ืื•ืชื ื•ื‘ื•ื“ืงื™ื ืื ื™ืฉ IP ืฆื™ื‘ื•ืจื™. ืื ื™ืฉ, ืื– ื ืชื— ืืช ื”ืžืืคื™ื™ืŸ PublicIpAddress, ืžืฆื ืืช ืฉื ื”ืžืฉืื‘ ื”ืžืชืื™ื ืœืคื™ ืžื–ื”ื” ื•ืžื—ืง ืื•ืชื•:


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]

ื”ืกืจืช ื”-Bob Status Disk System

ืœืฉื ื›ืš, ื›ืคื™ ืฉื‘ื˜ื— ื›ื‘ืจ ื ื™ื—ืฉืชื, ืื ื—ื ื• ืœื•ืงื—ื™ื ืืช ืžื™ื›ืœ ื”ืื—ืกื•ืŸ ืฉื‘ื• ืžืื•ื—ืกืŸ ื”ื“ื™ืกืง ื”ื–ื”, ื•ืžืจืžื–ื™ื ืฉื”ื‘ืœื•ื‘ ืฉื‘ืงืฆื” ืžื›ื™ืœ 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 VMs.

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”