เบเบฒเบเบเปเบฒเปเบเป PowerShell, เบงเบดเบชเบฐเบงเบฐเบเบญเบเปเบฅเบฐเบเบนเปเบเปเบฅเบดเบซเบฒเบ IT เบเบฐเบชเบปเบเบเบปเบเบชเปเบฒเปเบฅเบฑเบเปเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเปเบฒเบเปเปเบเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบเปเบเปเบงเบฅเบฒเบเบตเปเปเบฎเบฑเบเบงเบฝเบเบเปเปเบเบฝเบเปเบเปเบขเบนเปเปเบเบชเบฐเบเบฒเบเบเบตเป, เปเบเปเบเบฑเบเบเบฑเบเปเบเบเบชเปเบฒเบเบเบทเปเบเบเบฒเบเบเบญเบเบเบฅเบฒเบง, เปเบเบเบชเบฐเปเบเบฒเบฐเบเบฑเบ Azure. เปเบเบเบฒเบเบเปเบฅเบฐเบเบต, เบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเปเบฒเบ PowerShell เปเบกเปเบเบชเบฐเบเบงเบเบเบงเปเบฒ เปเบฅเบฐเปเบงเบเบงเปเบฒเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเปเบฒเบเบเบฐเบเบน Azure. เบเปเบเบญเบเปเบเบเบฑเบเบฅเบฑเบเบชเบฐเบเบฐเบเปเบฒเบกเปเบงเบเบตเบเบญเบเบกเบฑเบ, PowerShell เบชเบฒเบกเบฒเบเปเบเปเปเบเบฅเบฐเบเบปเบเบเบฐเบเบดเบเบฑเบเบเบฒเบเปเบเบเปเปเบเป.
ะะตะฒะฐะถะฝะพ, ัะฐะฑะพัะฐะตัะต ะปะธ ะฒั ั Ubuntu, Red Hat ะธะปะธ Windows โ PowerShell ะฟะพะผะพะถะตั ะบะพะฝััะพะปะธัะพะฒะฐัั ะพะฑะปะฐัะฝัะต ัะตััััั. ะัะฟะพะปัะทัั ะผะพะดัะปั
ะ ััะพะน ััะฐััะต ะผั ัะฐััะผะพััะธะผ, ะบะฐะบ ะผะพะถะฝะพ ะธัะฟะพะปัะทะพะฒะฐัั PowerShell, ััะพะฑั ะธะทะผะตะฝะธัั ัะฐะทะผะตั ะะ ะฒ ะพะฑะปะฐะบะต Azure, ะฐ ัะฐะบะถะต ััะพะฑั ัะดะฐะปะธัั ะะ ะธ ะฐััะพัะธะธัะพะฒะฐะฝะฝัะต ั ะฝะตะน ะพะฑัะตะบัั.
เบชเปเบฒเบเบฑเบ! ะะต ะทะฐะฑัะดััะต ะฟัะพัะตัะตัั ััะบะธ ัะฐะฝะธัะฐะนะทะตัะพะผ ะฟะพะดะณะพัะพะฒะธัััั ะบ ัะฐะฑะพัะต:
- เบเปเบฒเบเบเบฐเบเปเบญเบเบเบฒเบเปเบกเบเบนเบ Azure PowerShell Module โ ะตะณะพ ะผะพะถะฝะพ ะทะฐะณััะทะธัั ะธะท PowerShell Gallery ะบะพะผะฐะฝะดะพะน
Install-Module Az
. - ะัะถะฝะพ ะฐััะตะฝัะธัะธัะธัะพะฒะฐัััั ะฒ ะพะฑะปะฐะบะต Azure, ะณะดะต ะบัััะธััั ะฒะธัััะฐะปัะฝะฐั ะผะฐัะธะฝะฐ, ะฒัะฟะพะปะฝะธะฒ ะบะพะผะฐะฝะดั
Connect-AzAccount
.
ะะปั ะฝะฐัะฐะปะฐ ัะพะทะดะฐะดะธะผ ัะบัะธะฟั, ะบะพัะพััะน ัะตัะฐะนะทะธั Azure VM. ะัะบัะพะตะผ VS Code ะธ ัะพั ัะฐะฝะธะผ ะฝะพะฒัะน PowerShell ัะบัะธะฟั ะฟะพะด ะฝะฐะทะฒะฐะฝะธะตะผ เบเบฑเบเบเบฐเปเบฒเบ-AzVirtualMachine.ps1 โ ะฒ ะฝะตะณะพ ะผั ะฟะพ ั ะพะดั ะฟัะธะผะตัะฐ ะฑัะดะตะผ ะดะพะฑะฐะฒะปััั ะบััะบะธ ะบะพะดะฐ.
เบเบงเบเปเบฎเบปเบฒเบฎเปเบญเบเบเปเปเบซเปเบกเบตเบเบฐเบซเบเบฒเบ VM
เบเปเบญเบเบเบตเปเบเปเบฒเบเบเบฐเบเปเบฝเบเบเบฐเบซเบเบฒเบ VM, เบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเบเบญเบเบซเบฒเบชเบดเปเบเบเบตเปเบเบฐเบซเบเบฒเบเบเบตเปเบเบญเบกเบฎเบฑเบเปเบเปเบชเปเบฒเบฅเบฑเบเปเบเบทเปเบญเบ virtual เปเบ Azure cloud. เปเบเบทเปเบญเปเบฎเบฑเบเบชเบดเปเบเบเบตเป, เบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเบเปเบฒเปเบเบตเบเบเบฒเบเบเปเบฒเบชเบฑเปเบ Get-AzVMSize
.
เบเบฑเปเบเบเบฑเปเบเบชเปเบฒเบฅเบฑเบเปเบเบทเปเบญเบ virtual devvm01 เบเบฒเบโเบเบธเปเบกโเบเบฑเบโเบเบฐโเบเบฒโเบเบญเบโ dev ะทะฐะฟัะฐัะธะฒะฐะตะผ ะฒัะตะฒะพะทะผะพะถะฝัะต ะดะพะฟัััะธะผัะต ัะฐะทะผะตัั:
Get-AzVMSize -ResourceGroupName dev -VMName devvm01
(ะ ัะตะฐะปัะฝัั ะทะฐะดะฐัะฐั , ะตััะตััะฒะตะฝะฝะพ, ะฒะผะตััะพ ResourceGroupName=dev ะธ VMName=devm01 ะฒั ะฑัะดะตัะต ัะบะฐะทัะฒะฐัั ัะฒะพะธ ะทะฝะฐัะตะฝะธั ััะธั ะฟะฐัะฐะผะตััะพะฒ.)
ะะพะผะฐะฝะดะฐ ะฒะตัะฝะตั ะฟัะธะผะตัะฝะพ ัะฐะบะพะน ะฟะตัะตัะตะฝั:
ะญัะพ ะฒัะต ะฒะพะทะผะพะถะฝัะต ะฒะฐัะธะฐะฝัั ัะฐะทะผะตัะพะฒ, ะบะพัะพััะต ะผะพะถะฝะพ ะทะฐะดะฐัั ะดะปั ะดะฐะฝะฝะพะน ะฒะธัััะฐะปัะฝะพะน ะผะฐัะธะฝั.
เบกเบฒเบเบฑเบเบเบฐเปเบฒเบเบฅเบปเบ
ะะปั ะฟัะธะผะตัะฐ ะผั ัะดะตะปะฐะตะผ ัะตัะฐะนะท ะฝะฐ ะฝะพะฒัะน ัะฐะทะผะตั Standard_B1ls - เบฅเบฒเบงเบขเบนเปเปเบเบญเบฑเบเบเบฑเบเบเปเบฒเบญเบดเบเปเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเปเบฒเบเปเบเบดเบ. (เปเบโเบเบฒเบโเบเปเบฒโเปเบเปโเบเบตโเบงเบดเบโเบเบตเปโเปเบเปโเบเบดเบโ, เปเบเปโเบเบญเบโ, เบเปเบฒเบโเปเบฅเบทเบญเบโเปเบญเบปเบฒโเบเบฐโเบซเบเบฒเบโเปเบโเบเปโเบเบฒเบกโเบเบตเปโเบเปเบฒเบโเบเปเบญเบโเบเบฒเบโ.)
- เบเปเบฒเบญเบดเบเปเบเปเบเปเบฒเบชเบฑเปเบ
Get-AzVM
ะฟะพะปััะฐะตะผ ัะฒะตะดะตะฝะธั ะพ ะฝะฐัะตะผ ะพะฑัะตะบัะต (ะฒะธัััะฐะปัะฝะพะน ะผะฐัะธะฝะต), ัะพั ัะฐะฝัั ะธั ะฒ ะฟะตัะตะผะตะฝะฝัั$virtualMachine
:$virtualMachine = Get-AzVM -ResourceGroupName dev -VMName devvm01
- ะะฐัะตะผ ั ััะพะณะพ ะพะฑัะตะบัะฐ ะฑะตัะตะผ ัะฒะพะนััะฒะพ
.HardwareProfile.VmSize
เปเบฅเบฐเบเปเบฒเบเบปเบเบเปเบฒเปเบซเบกเปเบเบตเปเบเปเบญเบเบเบฒเบ:$virtualMachine.HardwareProfile.VmSize = "Standard_B1ls"
- ะ ัะตะฟะตัั ะฟัะพััะพ ะฒัะฟะพะปะฝัะตะผ ะบะพะผะฐะฝะดั ะพะฑะฝะพะฒะปะตะฝะธั ะะ โ
Update-AzVm
:Update-AzVM -VM devvm01 -ResourceGroupName dev
- ะฃะฑะตะถะดะฐะตะผัั, ััะพ ะฒัั ะฟัะพัะปะพ ััะฟะตัะฝะพ โ ะดะปั ััะพะณะพ ะพะฟััั ะถะต ะทะฐะฟัะฐัะธะฒะฐะตะผ ะธะฝัะพัะผะฐัะธั ะพ ะฝะฐัะตะผ ะพะฑัะตะบัะต ะธ ัะผะพััะธะผ ะฝะฐ ัะฒะพะนััะฒะพ
$virtualMachine.HardwareProfile
:$virtualMachine = Get-AzVM -ResourceGroupName dev -VMName devvm01 $virtualMachine.HardwareProfile
เบเปเบฒเบเบงเบเปเบฎเบปเบฒเปเบซเบฑเบเบขเบนเปเบเบตเปเบเบฑเปเบ Standard_B1ls - เบเบฑเปเบเบซเบกเบฒเบเบเบงเบฒเบกเบงเปเบฒเบเบธเบเบชเบดเปเบเบเบธเบเบขเปเบฒเบเปเบกเปเบเบขเบนเปเปเบเบเปเบฒเบชเบฑเปเบ, เบเบฐเบซเบเบฒเบเบเบญเบเบฅเบปเบเปเบเปเบเบทเบเบเปเบฝเบเปเบเบ. เบเปเบฒเบเบชเบฒเบกเบฒเบเปเบเบเบทเปเบกเบญเบตเบเปเบฅเบฐเบชเปเบฒเบเบเบงเบฒเบกเบชเปเบฒเปเบฅเบฑเบเบเบญเบเบเปเบฒเบเปเบเบเบเบฒเบเบเบฑเบเบเบฐเบซเบเบฒเบ VMs เบซเบผเบฒเบเบญเบฑเบเปเบเปเบงเบฅเบฒเบเบฝเบงเบเบฑเบเปเบเบเปเบเป array.
ะ ััะพ ะฝะฐััะตั ัะดะฐะปะตะฝะธั ะะ ะฒ Azure?
เบเปเบงเบเบเบฒเบเบฅเบถเบ, เบเปเปเปเบกเปเบเบเบธเบเบชเบดเปเบเบเบธเบเบขเปเบฒเบเปเบกเปเบเบเปเบฒเบเบเบฒเบเปเบฅเบฐเบเบปเบเปเบเบเบปเบเบกเบฒเบเบตเปเบกเบฑเบเบญเบฒเบเบเบฐเปเบเบดเปเบเบเบทเบงเปเบฒ. เบซเบผเบฑเบเบเบฒเบเบเบตเปเบเบฑเบเบซเบกเบปเบ, เบกเบฑเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบญเบปเบฒเบเบฑเบเบเบฐเบเบฒเบเบญเบเบเปเบฒเบเบงเบเบซเบเบถเปเบเบเบตเปเบเปเบฝเบงเบเปเบญเบเบเบฑเบเปเบเบทเปเบญเบเบเบฑเบเบเบตเป, เบฅเบงเบกเบเบฑเบ:
- เบเบนเบเบเบฑเบเปเบเบฑเบเบเปเปเบกเบนเบเบเบฒเบเบงเบดเบเบดเปเบช
- เปเบเบทเบญเบเปเบฒเบเปเบเปเบเบญเบ
- เบเบตเปเบขเบนเป IP เบชเบฒเบเบฒเบฅเบฐเบเบฐ
- ะกะธััะตะผะฝัะน ะดะธัะบ ะธ blob, ะณะดะต ั ัะฐะฝะธััั ะตะณะพ ััะฐััั
- เปเบเปเบเบเปเปเบกเบนเบ
ะะพัะตะผั ะผั ัะพะทะดะฐะดะธะผ ััะฝะบัะธั ะธ ะฝะฐะทะพะฒะตะผ ะตะต Remove-AzrVirtualMachine
โ ะธ ะพะฝะฐ ะฑัะดะตั ัะดะฐะปััั ะฝะต ัะพะปัะบะพ Azure VM, ะฝะพ ะธ ะฒัะต ะฒััะตะฟะตัะตัะธัะปะตะฝะฝะพะต.
ะะดัะผ ััะฐะฝะดะฐััะฝัะผ ะฟััะตะผ ะธ ัะฝะฐัะฐะปะฐ ะฟะพะปััะฐะตะผ ะฝะฐั ะพะฑัะตะบั (ะะ) ั ะฟะพะผะพััั ะบะพะผะฐะฝะดั Get-AzVm
. เบเบปเบงเบขเปเบฒเบ, เปเบซเปเบกเบฑเบเปเบเบฑเบเบฅเบปเบ WINSRV19 เบเบฒเบโเบเบธเปเบกโเบเบฑเบโเบเบฐโเบเบฒโเบเบญเบโ MyTestVMs.
ะกะพั
ัะฐะฝะธะผ ััะพั ะพะฑัะตะบั ะฒะผะตััะต ัะพ ะฒัะตะผะธ ะตะณะพ ัะฒะพะนััะฒะฐะผะธ ะฒ ะฟะตัะตะผะตะฝะฝัั $vm
:
$vm = Get-AzVm -Name WINSRV19 -ResourceGroupName MyTestVMs
ะฃะดะฐะปัะตะผ ะบะพะฝัะตะนะฝะตั ั ัะฐะนะปะฐะผะธ ะดะธะฐะณะฝะพััะธะบะธ ะทะฐะณััะทะบะธ
เปเบกเบทเปเบญเบชเปเบฒเบ VM เปเบ Azure, เบเบนเปเปเบเปเบเบฑเบเบเบทเบเบฎเปเบญเบเบเปเปเบซเปเบชเปเบฒเบเบเบฑเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบเบฑเบเบฎเบฑเบเบชเบฒเบเบฒเบเบงเบดเบเบดเบเปเบช boot (boot diagnostics container), เบเบฑเปเบเบเบฑเปเบเบเปเบฒเบกเบตเบเบฑเบเบซเบฒเบเบฑเบเบเบฒเบ booting, เบกเบตเบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบเบเบตเปเบเบฐเบซเบฑเบเปเบเบซเบฒเบเบฒเบเปเบเปเปเบเบเบฑเบเบซเบฒ. เบขเปเบฒเบเปเบเบเปเบเบฒเบก, เปเบกเบทเปเบญ VM เบเบทเบเบฅเบถเบ, เบเบฑเบเบเบตเปเบเบทเบเบเบฐเปเบงเปเปเบเบทเปเบญเบชเบทเบเบเปเปเบเบฒเบเบกเบตเบขเบนเปเบเบตเปเบเปเปเบกเบตเบเบธเบเบเบฐเบชเบปเบเปเบเบเบฑเบเบเบธเบเบฑเบ. เปเบซเปเปเบเปเปเบเบชเบฐเบเบฒเบเบฐเบเบฒเบเบเบตเป.
- ะกะฟะตัะฒะฐ ะฒัััะฝะธะผ, ะบะฐะบะพะผั ััะพัะฐะดะถ-ะฐะบะบะฐัะฝัั ะฟัะธะฝะฐะดะปะตะถะธั ััะพั ะบะพะฝัะตะนะฝะตั โ ะดะปั ััะพะณะพ ะฝะฐะผ ะฝัะถะฝะพ ัะฐะทััะบะฐัั ัะฒะพะนััะฒะพ
storageUri
เบขเบนเปเปเบเบฅเปเบฒเปเบชเปเบเบญเบเบงเบฑเบเบเบธDiagnosticsProfile
ะฝะฐัะตะน ะะ. ะะปั ััะพะณะพ ั ะธัะฟะพะปัะทัั ะฒะพั ัะฐะบะพะต ัะตะณัะปััะฝะพะต ะฒััะฐะถะตะฝะธะต:$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
ะฃะดะฐะปัะตะผ ัะตัะตะฒะพะน ะธะฝัะตััะตะนั ะธ ะฟัะฑะปะธัะฝัะน IP-ะฐะดัะตั
ะฃ ะฝะฐัะตะน ะะ ะพััะฐะปะธัั ะพะดะธะฝ (ะธะปะธ ะดะฐะถะต ะฝะตัะบะพะปัะบะพ) ัะตัะตะฒัั
ะธะฝัะตััะตะนัะพะฒ (NICs) โ ััะพะฑั ัะดะฐะปะธัั ะธั
ะทะฐ ะฝะตะฝัะถะฝะพัััั, ะฟัะพะนะดะตะผัั ะฟะพ ัะฒะพะนััะฒั NetworkInterfaces
ะฝะฐัะตะณะพ ะพะฑัะตะบัะฐ VM ะธ ัะดะฐะปะธะผ NIC ะบะพะผะฐะฝะดะพะน Remove-AzNetworkInterface
. ะะฐ ัะปััะฐะน, ะตัะปะธ ัะตัะตะฒัั
ะธะฝัะตััะตะนัะพะฒ ะฑะพะปะตะต ะพะดะฝะพะณะพ, ะธัะฟะพะปัะทัะตะผ ัะธะบะป. ะะฐะพะดะฝะพ ะดะปั ะบะฐะถะดะพะณะพ NIC ะฟัะพะฒะตัะธะผ ัะฒะพะนััะฒะพ IpConfiguration
ะฝะฐ ะฟัะตะดะผะตั ัะพะณะพ, ะตััั ะปะธ ั ะธะฝัะตััะตะนัะฐ ะฟัะฑะปะธัะฝัะน IP ะฐะดัะตั. ะัะดะต ัะฐะบะพะฒะพะน ะพะฑะฝะฐััะถะธััั, ัะดะฐะปะธะผ ะตะณะพ ะบะพะผะฐะฝะดะพะน Remove-AzPublicIpAddress
.
เบเบตเปเปเบกเปเบเบเบปเบงเบขเปเบฒเบเบเบญเบเบฅเบฐเบซเบฑเบเบเบฑเปเบเบเปเบฒเบง, เบเปเบญเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเปเบเบดเปเบเบเปเบฒเบ NICs เบเบฑเบเบซเบกเบปเบเปเบ loop, เบฅเบถเบเบเบงเบเบกเบฑเบ, เปเบฅเบฐเบเบงเบเปเบเบดเปเบเบงเปเบฒเบกเบต 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
}
}
}
เบเบฒเบเบเบญเบเปเบเปเบเบฅเบฐเบเบปเบ
ะะธัะบ ะะก ะฟัะตะดััะฐะฒะปัะตั ัะพะฑะพะน blob, ะดะปั ัะดะฐะปะตะฝะธั ะบะพะตะณะพ ะธะผะตะตััั ะบะพะผะฐะฝะดะฐ 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]
ะฃะดะฐะปัะตะผ Blob ััะฐัััะฐ ัะธััะตะผะฝะพะณะพ ะดะธัะบะฐ
ะะปั ััะพะณะพ, ะบะฐะบ ะฒั ัะถะต ะฝะฐะฒะตัะฝัะบะฐ ะดะพะณะฐะดะฐะปะธัั, ะผั ะฑะตัะตะผ ััะพัะฐะดะถ-ะบะพะฝัะตะนะฝะตั, ะฒ ะบะพัะพัะพะผ ั
ัะฐะฝะธััั ะดะฐะฝะฝัะน ะดะธัะบ, ะธ, ะฟะพะดัะฐะทัะผะตะฒะฐั, ััะพ blob ะฒ ะบะพะฝัะต ัะพะดะตัะถะธั status
, ะฟะตัะตะดะฐะตะผ ัะพะพัะฒะตัััะฒัััะธะต ะฟะฐัะฐะผะตััั ะบะพะผะฐะฝะดะต ัะดะฐะปะตะฝะธั Remove-AzStorageBlob
:
$osDiskStorageAcct | Get-AzStorageBlob -Container $osDiskContainerName -Blob "$($vm.Name)*.status" | Remove-AzStorageBlob
ะ, ะฝะฐะบะพะฝะตั, ัะดะฐะปัะตะผ ะดะธัะบะธ ั ะดะฐะฝะฝัะผะธ
ะฃ ะฝะฐัะตะน ะะ ะผะพะณะปะธ ะพััะฐะฒะฐัััั ะดะธัะบะธ ั ะดะฐะฝะฝัะผะธ, ะบะพัะพััะต ะฑัะปะธ ะบ ะฝะตะน ะฟัะธะฐััะฐัะตะฝั. ะัะปะธ ะฒ ะฝะธั
ะฝะตั ะฝะตะพะฑั
ะพะดะธะผะพััะธ, ัะดะฐะปะธะผ ะธ ะธั
ัะพะถะต. ะกะฝะฐัะฐะปะฐ ัะฐัะฟะฐััะธะผ StorageProfile
VM เบเบญเบเบเบงเบเปเบฎเบปเบฒเปเบฅเบฐเบเบญเบเบซเบฒเบเบฑเบเบชเบดเบ Uri
. ะัะปะธ ะดะธัะบะพะฒ ะฝะตัะบะพะปัะบะพ, ะพัะณะฐะฝะธะทัะตะผ ัะธะบะป ะฟะพ URI
. ะะปั ะบะฐะถะดะพะณะพ URI ะฝะฐะนะดะตะผ ัะพะพัะฒะตัััะฒัััะธะน ััะพัะฐะดะถ-ะฐะบะบะฐัะฝั ั ะฟะพะผะพััั Get-AzStorageAccount
. ะะฐัะตะผ ัะฐัะฟะฐััะธะผ storage URI, ััะพะฑั ะฒััะฐัะธัั ะฝัะถะฝะพะต ะธะผั blob-a ะธ ะฟะตัะตะดะฐัั ะตะณะพ ะบะพะผะฐะฝะดะต ัะดะฐะปะตะฝะธั 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 เบชเบธเบเบเปเบฒเบเบเบตเปเปเบญเบตเปเบเบงเปเบฒ Remove-AzrVirtualMachine.ps1:
โ
ะะฐะดะตััั, ััะพ ััะธ ะฟัะฐะบัะธัะตัะบะธะต ัะพะฒะตัั ะฟัะธะณะพะดัััั ะฒะฐะผ, ััะพะฑั ััะบะพะฝะพะผะธัั ัะธะปั, ะฒัะตะผั ะธ ััะตะดััะฒะฐ ะฟัะธ ัะฐะฑะพัะต ั Azure VMs.
เปเบซเบผเปเบเบเปเปเบกเบนเบ: www.habr.com