PowerShell ááá¯á¡áá¯á¶ážááŒá¯ááŒááºážááŒáá·áºá á¡ááºáá»ááºáá®áá¬áá»á¬ážááŸáá·áº á¡áá¯ááºáá®á á®áá¶ááá·áºááœá²áá°áá»á¬ážááẠá¡áá°ážáááŒáá·áº Azure ááŸáá·áº á ááºáá¯á¶áá»á¬ážááœááºáá¬áá cloud á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶áá»á¬ážááŸáá·áºáááºáž áá¯ááºáá±á¬ááºááá·áºá¡áá« á¡áá»áá¯ážáá»áá¯ážáá±á¬á¡áá¯ááºáá»á¬ážááᯠá¡á±á¬ááºááŒááºá áœá¬á¡ááá¯á¡áá»á±á¬ááºáá¯ááºáá±á¬ááºááá¯ááºáááºááŒá áºáááºá á¡áá»áá¯á·ááá á¹á áá»á¬ážááœááºá PowerShell ááŸáááá·áºáá¯ááºáá±á¬ááºááŒááºážááẠAzure portal ááŸáááá·áºáá¯ááºáá±á¬ááºááŒááºážáááºááá¯ááá¯á¡áááºááŒá±ááŒá®ážááá¯ááá¯ááŒááºáááºáááºá áááºážá cross-platform ááá±á¬ááá¬áááŒá±á¬áá·áº PowerShell ááᯠáááºááá·áº operating system ááœááºáááᯠá¡áá¯á¶ážááŒá¯ááá¯ááºáááºá
ááẠUbuntuá Red Hat ááá¯á·ááá¯áẠWindows ááᯠá¡áá¯á¶ážááŒá¯áá±áááºááŒá
áºá
á± PowerShell ááẠááá·áº cloud á¡áááºážá¡ááŒá
áºáá»á¬ážááᯠááááºážáá»á¯ááºááẠáá°áá®áá±ážááá¯ááºáá«áááºá module ááá¯á¡áá¯á¶ážááŒá¯ááŒááºážá
á€áá±á¬ááºážáá«ážááœááºá Azure cloud ááŸá VM ááᯠá¡ááœááºá¡á á¬ážááŒá±á¬ááºážááẠPowerShell ááᯠáááºá¡áá¯á¶ážááŒá¯áá¯á¶á¡ááŒáẠVM ááŸáá·áº áááºážááááºá ááºáá á¹á ááºážáá»á¬ážááᯠáá»ááºáá áºááá¯ááºáá¯á¶ááᯠáá±á·áá¬áá«áááºá
á¡áá±ážááŒá®áž! á¡áá¯ááºá¡ááœááºááŒááºáááºááẠáááºááᯠááá·áºá
ááºáá±ážááŒáá·áº áá¯ááºááẠááá±á·áá«ááŸáá·áºá
- Module áá
áºáá¯ááá¯áá«áááá·áºáááºá Azure PowerShell Module - á¡áááá·áºááŒáá·áº PowerShell Gallery ááŸáá±á«ááºážáá¯ááºáá¯ááºááá¯ááºáááºá
Install-Module Az
. - á¡áááá·áºááá¯áá¯ááºáá±á¬ááºááŒááºážááŒáá·áº virtual machine áááºáááºáá±ááá·áº Azure cloud ááœáẠá
á
áºááŸááºááŒá±á¬ááºážá¡áá±á¬ááºá¡áá¬ážááŒááẠááá¯á¡ááºáááºá
Connect-AzAccount
.
áŠážá áœá¬á Azure VM ááᯠá¡ááœááºá¡á á¬ážááŒá±á¬ááºážááá·áº script áá áºáá¯ááᯠáááºáá®ážááŒáá«á áá¯á·á VS Code ááá¯ááœáá·áºááŒá®áž PowerShell ááá¯á·áá±á«áºáá²á· Script á¡áá áºáá áºáá¯ááᯠááááºážááá¯ááºááŒáá¡á±á¬áẠá¡ááœááºá¡á á¬áž-AzVirtualMachine.ps1 â á¥ááᬠááá¯ážáááºáá¬áááºááŸáá·áºá¡áá»áŸ áááºážááœáẠáá¯ááºá¡ááá¯ááºážá¡á áá»á¬ážááᯠáá±á«ááºážááá·áºáá«áááºá
áááŸáááá¯ááºáá±á¬ VM á¡ááœááºá¡á á¬ážáá»á¬ážááᯠáá»áœááºá¯ááºááá¯á·áá±á¬ááºážááá¯áá«áááºá
VM á¡ááœááºá¡á
á¬ážááᯠáááŒá±á¬ááºážáá®á Azure cloud ááŸá virtual machines á¡ááœáẠáááºáá¶ááá¯ááºáá±á¬ á¡ááœááºá¡á
á¬ážáá»á¬ážááᯠááŸá¬ááœá±ááẠááá¯á¡ááºáá«áááºá áá®ááá¯áá¯ááºááá¯á·ááẠcommand ááᯠrun ááá¯á·ááá¯á¡ááºáá«áááºá Get-AzVMSize
.
áá«ááŒá±á¬áá·áº virtual machine á¡ááœáẠdevvm01 á¡áááºážá¡ááŒá áºá¡ááœá²á·á០dev áááºáá¶ááá¯ááºáá±á¬ á¡ááœááºá¡á á¬ážá¡á¬ážáá¯á¶ážááᯠáá»áœááºá¯ááºááá¯á· áá±á¬ááºážááá¯áááº-
Get-AzVMSize -ResourceGroupName dev -VMName devvm01
(ááááºáá±á¬á· ááŒááá¬ááœá± á¡á á¬áž áá¯ááºáá«áááºá ResourceGroupName=dev О VMName=devvm01 á€áááºááŸááºáá»ááºáá»á¬ážá¡ááœáẠááá·áºááá¯ááºááá¯ááºáááºááá¯ážáá»á¬ážááᯠáááºáááºááŸááºáá±ážáá«áááºá)
command ááẠá€áá²á·ááá¯á·áá±á¬ á¡áá¬áá áºáá¯ááᯠááŒááºáá±ážáááá·áºáááº-
áááºážááá¯á·ááẠáá±ážáá¬ážááá·áº virtual machine á¡ááœáẠáááºááŸááºááá¯ááºááá·áº ááŒá
áºááá¯ááºááŒá±ááŸááá±á¬ á¡ááœááºá¡á
á¬ážáá»á¬ážááŒá
áºáááºá
áá¬ážááᯠá¡ááœááºá¡á á¬ážááŒá±á¬ááºážááŒáá·áºáá¡á±á¬ááº
á¥ááá¬á¡á¬ážááŒáá·áºá áá»áœááºá¯ááºááá¯á·ááẠá¡ááœááºá¡á á¬ážá¡áá áºááá¯á· ááŒá±á¬ááºážáá²áááºááŒá áºáááºá Standard_B1ls - áá°ááẠá¡áááºáá«á á¬áááºážááœáẠááááá±áá¬ááœáẠááŸááá±áááºá (áááºááœá±á·ááá¡áá¯á¶ážáá»áááá¯ááááºáá»á¬ážááœááºá áááºááá¯á¡ááºááá·áºá¡ááœááºá¡á á¬ážááá¯ááœá±ážáá»ááºáá«á)
- ááááá¯á¶áž command ááá¯á¡áá¯á¶ážááŒá¯áá«á
Get-AzVM
áá»áœááºá¯ááºááá¯á·ááẠáá»áœááºá¯ááºááá¯á·á á¡áá¬ááá¹áᯠ(virtual machine) ááŸáá·áºáááºáááºáá±á¬ á¡áá»ááºá¡áááºáá»á¬ážááᯠááááºážááŸááºáá áºáá¯ááœáẠááááºážáááºážááŒááºážááŒáá·áº áááºážááᯠáááŸááá«áááºá$virtualMachine
:$virtualMachine = Get-AzVM -ResourceGroupName dev -VMName devvm01
- ááá¯á·áá±á¬áẠá€á¡áá¬ááá¹áá¯á០áá»áœááºá¯ááºááá¯á·ááẠááá¯ááºááá¯ááºááŸá¯ááᯠáá°áááºá
.HardwareProfile.VmSize
ááá¯áá»ááºáá±á¬áááºááá¯ážá¡áá áºááᯠáááºááŸááºáá«-$virtualMachine.HardwareProfile.VmSize = "Standard_B1ls"
- ááá¯áá»áœááºá¯ááºááá¯á·ááẠVM update command ááá¯ááá¯ážááŸááºážá
áœá¬áá¯ááºáá±á¬ááºááẠ-
Update-AzVm
:Update-AzVM -VM devvm01 -ResourceGroupName dev
- á¡áá¬á¡á¬ážáá¯á¶áž á¡áááºááŒá±ááœá¬ážááŒá±á¬ááºáž áá±áá»á¬á¡á±á¬áẠ- áá«ááá¯áá¯ááºááá¯á·á áá»áœááºá¯ááºááá¯á·áá²á· á¡áá¬ááá¹áá¯áá²á· áááºáááºáá²á· á¡áá»ááºá¡áááºááᯠáááºááŒá®áž áá±á¬ááºážááá¯ááŒá®áž ááá¯ááºááá¯ááºááŸá¯ááᯠááŒáá·áºááá¯ááºáá«á
$virtualMachine.HardwareProfile
:$virtualMachine = Get-AzVM -ResourceGroupName dev -VMName devvm01 $virtualMachine.HardwareProfile
á¡á²áá®ááŸá¬ááœá±á·ááẠStandard_B1ls - ááá¯ááá¯áááºááŸá¬ á¡áá¬á¡á¬ážáá¯á¶ážááẠá áá áºááá»ááŒá áºááŒá®ážá áá¬ážá¡ááœááºá¡á á¬ážááᯠááŒá±á¬ááºážáá²áá¬ážáááºá array áá áºáá¯ááᯠá¡áá¯á¶ážááŒá¯á VM á¡áá»á¬ážá¡ááŒá¬ážááᯠáá áºááŒáá¯ááºáááºáááºáž á¡ááœááºá¡á á¬ážááŒá±á¬ááºážááŒááºážááŒáá·áº áááºááẠááá¯ááá¯ááá¯ážáááºááŒá®áž á¡á±á¬ááºááŒááºááŸá¯ááᯠáááºáá±á¬ááºááá¯ááºáááºá
Azure ááœáẠVM ááá¯áá»ááºááŒááºážááŸáá·áºáááºáááºááá±á¬á
áá»ááºááŒááºážááŒáá·áºá á¡áá¬á¡á¬ážáá¯á¶ážááẠáááºáá¬ážááá±á¬áẠááá¯ážááŸááºážááŒá®áž ááá¯ážááŸááºážáááºááá¯ááºáá«á áá±á¬ááºáá¯á¶ážá¡áá±ááŸáá·áºá á€á ááºááŸáá·áºáááºá ááºáá±áá±á¬ á¡áááºážá¡ááŒá áºáá»á¬ážá áœá¬ááᯠáááºááŸá¬ážááẠááá¯á¡ááºáá«áááºá á¡áá«á¡áááºá
- á¡ááŸá¬ážááŸá¬ááœá±ááŒááºáž ááá¯ááŸá±á¬ááºáááºážáá»á¬ážááᯠá áááºáá«á
- ááœááºáááºá¡ááºáá¬áá±á·
- á¡áá»á¬ážáá°ááŸá¬ IP ááááºá á¬áá»á¬áž
- áááºážá á¡ááŒá±á¡áá±ááᯠááááºážáááºážáá¬ážááá·áº á áá áºáá áºááŸáá·áº blob
- áá±áá¬áá áºáá»á¬áž
ááá¯á·ááŒá±á¬áá·áºá áá»áœááºá¯ááºááá¯á·ááẠfunction áá
áºáá¯ááá¯áááºáá®ážááŒá®áž áááºážááá¯áá±á«áºáá«áááºá Remove-AzrVirtualMachine
- áááºážááẠAzure VM áá¬áá á¡áááºáá«á¡áá¬á¡á¬ážáá¯á¶ážááá¯áá« áá»ááºáá
áºáááºááŒá
áºáááºá
áá»áœááºá¯ááºááá¯á·ááẠá
á¶áááºážá¡ááá¯ááºážááœá¬ážááŒá®áž áá»áœááºá¯ááºááá¯á·áá¡áá¬ááá¹áᯠ(VM) ááᯠcommand ááá¯á¡áá¯á¶ážááŒá¯á áŠážá
áœá¬ááá°áá«á Get-AzVm
. á¥ááá¬á áá¬ážááŒá
áºáá«á
á±á WINSRV19 á¡áááºážá¡ááŒá
áºá¡ááœá²á·á០MyTestVMs.
á€á¡áá¬ááá¹áá¯á¡á¬áž áááºážá áá¯ááºááá¹áááá»á¬ážááŸáá·áºá¡áá° ááááºážááŸááºáá
áºáá¯á¡ááŒá
ẠááááºážáááºážááŒáá«á
áá¯á· $vm
:
$vm = Get-AzVm -Name WINSRV19 -ResourceGroupName MyTestVMs
boot áá±á¬áá«ááŸá¬ááœá±áá±ážááá¯ááºáá»á¬ážááŒáá·áº ááœááºááááºáá¬ááᯠáááºááŸá¬ážááŒááºážá
Azure ááœáẠVM ááá¯áááºáá®ážáá±á¬á¡áá«á á¡áá¯á¶ážááŒá¯áá°ááᯠboot diagnostics (boot diagnostics container) ááááºážáááºážááẠááœááºááááºáá¬áá áºáá¯ááᯠáááºáá®ážááá¯ááºážááŒá®áž booting ááœáẠááŒá¿áá¬áá»á¬ážááŸááá«áá ááŒá¿áá¬ááŒá±ááŸááºážááẠáá áºáá¯áá¯ááᯠáá¯ááºáá±á¬ááºááẠááá¯á¡ááºáá«áááºá ááá¯á·áá±á¬áºá VM ááá¯áá»ááºááá¯ááºáá±á¬á¡áá«á á€ááœááºááááºáá¬ááẠáááºážáááá¯áááºááœááºáá»ááºáá²á·áááºááŸáááŸá¯ááᯠáááºáááºáá¯ááºáá±á¬ááºááẠáá»ááºáá±áá«áááºá áá®á¡ááŒá±á¡áá±ááᯠááŒááºááŒáá¡á±á¬ááºá
- áŠážá
áœá¬á á€ááœááºááááºáá¬á ááá¯ááŸá±á¬ááºááŸá¯á¡áá±á¬áá·áºááẠáááºááá·áºááá¯ááŸá±á¬ááºááŸá¯á¡áá±á¬áá·áºááᯠááŸá¬ááœá±ááŒáá«á
áá¯á· - á€á¡ááœáẠáá»áœááºá¯ááºááá¯á·ááẠááá¯ááºááá¯ááºááŸá¯ááᯠááŸá¬ááœá±ááẠááá¯á¡ááºáá«áááºá
storageUri
á¡áá¬ááá¹áá¯ááááºážáDiagnosticsProfile
áá»áœááºá¯ááºááá¯á·á VM áá«ááá¯áá¯ááºááá¯á· áá»áœááºáá±á¬áºá áá®áá¯á¶ááŸááºá¡áá¯á¶ážá¡ááŸá¯ááºážááᯠáá¯á¶ážáá«áááºá$diagSa = [regex]::match($vm.DiagnosticsProfile.bootDiagnostics.storageUri, '^http[s]?://(.+?)\.').groups[1].value
- ááá¯áááºááœááºááááºáá¬áá¡áááºááá¯ááŸá¬ááœá±áááºááá¯á¡ááºááŒá®ážáááºážá¡ááœááºááẠcommand ááá¯á¡áá¯á¶ážááŒá¯á 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
- ááᯠáá»áœááºá¯ááºááá¯á·ááœáẠcommand ááŒáá·áº ááœááºááááºáá¬ááᯠáá»ááºááẠááá¯á¡ááºááá·áº á¡áá¬á¡á¬ážáá¯á¶ážááŸááááºá
Remove-AzStorageContainer
:$saParams = @{ 'ResourceGroupName' = $diagSaRg 'Name' = $diagSa } Get-AzStorageAccount @saParams | Get-AzStorageContainer | where { $_.Name-eq $diagContainerName } | Remove-AzStorageContainer -Force
VM ááá¯áááºááŸá¬ážááŒááºážá
áá»áœááºá¯ááºááá¯á·ááẠááááºážááŸááºáá
áºáá¯ááᯠáááºáá®ážáá¬ážááŒá®ážááŒá
áºáá±á¬ááŒá±á¬áá·áº ááᯠvirtual machine ááá¯ááºááá¯ááºáá»ááºááá¯ááºááŒáá«á
áá¯á· $vm
áááºááá¯ááºáá¬á¡áá¬ááá¹áá¯á¡ááœááºá áá±á¬ááºážááŒá®á command ááᯠrun ááŒáá¡á±á¬áẠRemove-AzVm
:
$null = $vm | Remove-AzVM -Force
ááœááºáááºá¡ááºáá¬áá±á·á áºááŸáá·áº á¡áá»á¬ážáá°ááŸá¬ IP ááááºá á¬ááᯠáááºááŸá¬ážááŒááºážá
áá»áœááºá¯ááºááá¯á·á VM ááœáẠáá
áºáᯠ(ááá¯á·ááá¯áẠá¡áá»á¬ážá¡ááŒá¬áž) ááœááºáááºáá»áááºáááºááŸá¯áá»á¬áž (NICs) ááŸááá±áá±ážááẠ- áááºážááá¯á·ááᯠáááá¯á¡ááºáá² áááºááŸá¬ážáááºá ááá¯ááºááá¯ááºááŸá¯ááᯠááŒááºáááºážááŒáá·áºááŒáá«á
áá¯á·á NetworkInterfaces
áá»áœááºá¯ááºááá¯á·á VM object ááᯠcommand ááŒáá·áº NIC ááá¯áá»ááºáá«á Remove-AzNetworkInterface
. ááœááºáááºáá
áºáá¯áááºááá¯áá±á¬ á¡ááºáá¬áá±á·á
áºááŸááá«áá áá»áœááºá¯ááºááá¯á·ááẠloop áá
áºáá¯ááᯠá¡áá¯á¶ážááŒá¯áááºá áá
áºáá»áááºáááºážááŸá¬áááºá NIC áá
áºáá¯á
á®á¡ááœááºáá»áœááºá¯ááºááá¯á·áááºááá¯ááºááá¯ááºááŸá¯ááá¯á
á
áºáá±ážáá«áááºá IpConfiguration
á¡ááºáá¬áá±á·á
áºááœáẠá¡áá»á¬ážáá°ááŸá¬ IP ááááºá
á¬ááŸááááŸá áá¯á¶ážááŒááºáááºá ááœá±á·ááŸááá«á á¡áááá·áºááŒáá·áº áááºážááᯠáááºááŸá¬ážáá«áááºá Remove-AzPublicIpAddress
.
á€ááœáẠáá»áœááºá¯ááºááá¯á·ááẠNICs á¡á¬ážáá¯á¶ážááᯠá¡ááá¯ááºážáá
áºáá¯á¡ááœááºáž ááŒáá·áºááŸá¯áᬠáááºážááá¯á·ááᯠáá»ááºáᬠá¡áá»á¬ážáá°ááŸá¬ 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 disk ááẠblob áá
áºáá¯ááŒá
áºááŒá®áž áááºážááá¯áá»ááºááẠcommand áá
áºáá¯ááŸááááºá 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]
System Disk Status Blob ááᯠáááºááŸá¬ážááŒááºážá
á€ááá¯á·áá¯ááºáá±á¬ááºááẠáááºááá·áºááŸááºážáá¬ážááŒá®ážááŒá
áºááá·áºá¡ááá¯ááºážá áá»áœááºá¯ááºááá¯á·ááẠá€áá
áºááºááᯠááááºážáááºážáá¬ážááá·áº ááá¯ááŸá±á¬ááºááŸá¯ááœááºááááºáá¬ááᯠáá°áᬠá¡áá¯á¶ážááœáẠblob áá«ááŸááááºááᯠááá¯ááá¯áááºážá status
á áááºááá¯ááºáᬠparameters áá»á¬ážááᯠdelete command ááá¯á·áá±ážááá¯á·áá«á Remove-AzStorageBlob
:
$osDiskStorageAcct | Get-AzStorageBlob -Container $osDiskContainerName -Blob "$($vm.Name)*.status" | Remove-AzStorageBlob
áá±á¬ááºáá¯á¶ážá¡áá±áá²á· áá±áá¬áá áºááœá±ááᯠáááºááŸá¬ážááá¯ááºáá«á
áá»áœááºá¯ááºááá¯á·á VM ááœáẠáááºážááŸáá·áºááœá²áá¬ážááá·áº áá±áá¬áá«ááá·áºáá
áºáá»á¬áž ááŸááá±ááá¯ááºáá±ážáááºá áááá¯á¡ááºááẠáá»ááºáá
áºáááºá á¡áááºáááºážá
á
áºááŒáá·áºáá¡á±á¬áẠStorageProfile
áá»áœááºá¯ááºááá¯á·á VM ááŸáá·áºááá¯ááºááá¯ááºááŸá¯ááá¯ááŸá¬ááœá±áá«á Uri
. áá
áºá¡áá»á¬ážá¡ááŒá¬ážááŸááá»áŸáẠáá»áœááºá¯ááºááá¯á·ááẠáá¶ááá¬áá
áºáá¯á¡á¬áž á
á¯á
ááºážáá¬ážáááºá URI
. URI áá
áºáá¯á
á®á¡ááœááºá áááºááá¯ááºáᬠááá¯ááŸá±á¬ááºááŸá¯á¡áá±á¬áá·áºááᯠá¡áá¯á¶ážááŒá¯á áá»áœááºá¯ááºááá¯á· ááŸá¬ááœá±á·áá«áááºá Get-AzStorageAccount
. ááá¯á·áá±á¬áẠá¡ááá¯ááŸááá±á¬ blob á¡áááºááᯠáá¯ááºáá°ááẠááá¯ááŸá±á¬ááºááŸá¯ 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]
}
}
ááá¯áááºáž "áá»áœááºá¯ááºááá¯á·ááẠáá»á±á¬áºááœáŸááºááœááºá¡áá¯á¶ážáááºááᯠáá±á¬ááºááŸáááœá¬ážáá«ááŒá®!" ááᯠáá»áœááºá¯ááºááá¯á·ááẠá€á¡ááá¯ááºážá¡á áá»á¬ážá¡á¬ážáá¯á¶ážá០áá áºáá¯áááºážááᯠá á¯á ááºážááẠááá¯á¡ááºáá«áááºá á á¬áá±ážááá¬ááŒá®áž Adam Bertram ááẠáá¯á¶ážá áœá²áá°áá»á¬ážááᯠáááºážáá áºáááºááœáẠááœá±á·áá¯á¶ááŒá®áž áááºážááá¯ááºááá¯áẠááŒá¯áá¯ááºáá²á·áááºá áá«ááá±á¬á· áá±á¬ááºáá¯á¶áž script ááá¯á·áá±á«áºáá²á· ááá·áºááºáá áºáá¯áá«á AzrVirtualMachine.ps1 ááᯠáááºááŸá¬ážáá«á:
â
Azure VMs ááŸáá·áºá¡áá¯ááºáá¯ááºáá±á¬á¡áá« á€áááºááœá±á·áá»áá±á¬á¡ááŒá¶ááŒá¯áá»ááºáá»á¬ážááẠááá·áºá¡ááœáẠá¡áá¯á¶ážáááºáááºáᯠáá»áŸá±á¬áºááá·áºáá«áááºá
source: www.habr.com