Pogwiritsa ntchito PowerShell, mainjiniya ndi oyang'anira IT azitha kuyendetsa bwino ntchito zosiyanasiyana osati m'malo omwe ali pamalopo komanso mumtambo, makamaka Azure. Nthawi zambiri, kugwira ntchito ndi PowerShell ndikosavuta komanso mwachangu kuposa kugwiritsa ntchito portal ya Azure. Chifukwa cha mawonekedwe ake ophatikizika, PowerShell itha kugwiritsidwa ntchito pamakina aliwonse.
Sizikukhudza ngati mukugwira ntchito ndi Ubuntu, Chipewa Chofiira kapena Windows — PowerShell idzakuthandizani kuwongolera zinthu zamtambo. Kugwiritsa ntchito gawoli , mwachitsanzo, mutha kukhazikitsa chilichonse cha makina enieni.
M'nkhaniyi, tiwona momwe mungagwiritsire ntchito PowerShell kuti musinthe kukula kwa VM mumtambo wa Azure, komanso kuchotsa VM ndi zinthu zomwe zikugwirizana nazo.

Zofunika! Musaiwale kupukuta manja anu ndi sanitizer ndikukonzekera ntchito:
- Mufunika gawo Azure PowerShell Module - ikhoza kutsitsidwa kuchokera ku PowerShell Gallery pogwiritsa ntchito lamulo
Install-Module Az. - Muyenera kutsimikizira mumtambo wa Azure komwe makina enieni akuyenda poyendetsa lamulo
Connect-AzAccount.
Choyamba, tiyeni tipange script yomwe ingasinthe kukula kwa Azure VM. Tsegulani VS Code ndikusunga script yatsopano ya PowerShell yotchedwa Resize-AzVirtualMachine.ps1 - tidzawonjezera zidutswa za code pamene chitsanzo chikupita patsogolo.
Tikupempha masaizi a VM omwe alipo
Musanasinthe kukula kwa VM, muyenera kudziwa kukula kwake komwe kumaloledwa kumakina omwe ali mumtambo wa Azure. Kuti muchite izi, yendetsani lamulo Get-AzVMSize.
Choncho, kwa makina enieni devm01 kuchokera ku gulu lothandizira dev Tikupempha masaizi onse ovomerezeka:
Get-AzVMSize -ResourceGroupName dev -VMName devvm01(Mumavuto enieni, mwachilengedwe, m'malo mwa ResourceGroupName=dev и VMName=devvm01 Mudzafotokozera zomwe mukufuna pazigawo izi.)
Lamulo lidzabweretsanso mndandanda monga chonchi:

Izi ndi zosankha zonse za kukula zomwe zitha kukhazikitsidwa pamakina awa.
Kusintha kukula kwa galimoto
Mwachitsanzo, tidzasintha kukula mpaka kukula kwatsopano. Standard_B1ls - ili pamwamba pa mndandanda womwe uli pamwambapa. (Muzochitika zenizeni, mutha kusankha kukula kulikonse komwe mungafune.)
- Choyamba, kugwiritsa ntchito lamulo
Get-AzVMtimapeza zambiri za chinthu chathu (makina enieni), ndikusunga muzosintha$virtualMachine:$virtualMachine = Get-AzVM -ResourceGroupName dev -VMName devvm01 - Kenako timatenga katundu ku chinthu ichi
.HardwareProfile.VmSizendikukhazikitsa mtengo watsopano womwe mukufuna:$virtualMachine.HardwareProfile.VmSize = "Standard_B1ls" - Ndipo tsopano tikungopereka lamulo losintha la VM -
Update-AzVm:Update-AzVM -VM devvm01 -ResourceGroupName dev - Tiyeni tiwonetsetse kuti zonse zayenda bwino - chifukwa cha izi, tikupemphanso zambiri za chinthu chathu ndikuyang'ana malowo
$virtualMachine.HardwareProfile:$virtualMachine = Get-AzVM -ResourceGroupName dev -VMName devvm01 $virtualMachine.HardwareProfile
Ngati tiwona pamenepo Standard_B1ls - ndiye zonse zili bwino, makinawo adasinthidwanso. Titha kuchita bwino kwambiri ndikusintha ma VM angapo nthawi imodzi pogwiritsa ntchito mndandanda.
Nanga bwanji kuchotsa VM ku Azure?
Kuchotsa sikophweka komanso kosavuta monga kungawonekere. Zinthu zingapo zolumikizidwa ndi makinawa ziyeneranso kuchotsedwa, kuphatikiza:
- Zida zosungiramo zowunikira za jombo
- Malo ochezera
- Ma adilesi a IP apagulu
- Diski yadongosolo ndi blob pomwe malo ake amasungidwa
- Ma disks a data
Chifukwa chake tipanga ntchito ndikuyitcha Remove-AzrVirtualMachine - ndipo sichichotsa Azure VM yokha, komanso zonse zomwe zalembedwa pamwambapa.
Timatsatira njira yokhazikika ndikuyamba kupeza chinthu chathu (VM) pogwiritsa ntchito lamulo Get-AzVmMwachitsanzo, lolani kukhala galimoto. WINSRV19 kuchokera ku gulu lothandizira MyTestVMs.
Tiyeni tisunge chinthu ichi pamodzi ndi zinthu zake zonse muzosintha. $vm:
$vm = Get-AzVm -Name WINSRV19 -ResourceGroupName MyTestVMsKuchotsa chidebe chokhala ndi mafayilo owunikira
Popanga VM ku Azure, wogwiritsa ntchito amalimbikitsidwanso kuti apange chidebe chowunikira kuti athe kuchigwiritsa ntchito pothetsa mavuto ngati vuto la boot lichitika. Komabe, pochotsa VM, chidebe ichi chimapitilira kukhalapo kwake kopanda cholinga. Tiyeni tikonze izi.
- Choyamba, tiyeni tiwone kuti chidebecho ndi akaunti yanji yosungiramo - chifukwa chake tifunika kupeza malowo
storageUrimu kuya kwa chinthuDiagnosticsProfileVM yathu. Pazifukwa izi, ndimagwiritsa ntchito mawu awa pafupipafupi:$diagSa = [regex]::match($vm.DiagnosticsProfile.bootDiagnostics.storageUri, '^http[s]?://(.+?)\.').groups[1].value - Tsopano muyenera kudziwa dzina la chidebecho, ndipo kuti muchite izi muyenera kupeza ID ya VM pogwiritsa ntchito lamulo
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) - Kenako, timapeza dzina la gulu lazinthu zomwe chidebecho chili:
$diagSaRg = (Get-AzStorageAccount | where { $_.StorageAccountName -eq $diagSa }).ResourceGroupName - Ndipo tsopano tili ndi zonse zomwe tikufuna kuti tichotse chidebecho ndi lamulo
Remove-AzStorageContainer:$saParams = @{ 'ResourceGroupName' = $diagSaRg 'Name' = $diagSa } Get-AzStorageAccount @saParams | Get-AzStorageContainer | where { $_.Name-eq $diagContainerName } | Remove-AzStorageContainer -Force
Kuchotsa VM
Tsopano tiyeni tifufute makina enieniwo, popeza tapanga kale zosinthika $vm kwa chinthu chofanana. Chabwino, tiyeni tiyendetse lamulo Remove-AzVm:
$null = $vm | Remove-AzVM -ForceKuchotsa mawonekedwe a netiweki ndi adilesi yapagulu ya IP
VM yathu ili ndi malo amodzi (kapena angapo) ochezera (NICs) otsala - kuti awachotse ngati osafunikira, tiyeni tidutse NetworkInterfaces chinthu chathu cha VM ndikuchotsa NIC ndi lamulo Remove-AzNetworkInterfaceNgati pali maukonde opitilira umodzi, timagwiritsa ntchito lupu. Timawonanso malo a NIC iliyonse. IpConfiguration Yang'anani kuti muwone ngati mawonekedwewo ali ndi adilesi yapagulu ya IP. Ngati wina apezeka, tizichotsa ndi lamulo Remove-AzPublicIpAddress.
Nachi chitsanzo cha nambala zotere, pomwe timadutsa ma NIC onse, kuwachotsa, ndikuwunika ngati ali ndi IP yapagulu. Ngati ndi choncho, timagawaniza katunduyo. PublicIpAddress, timapeza dzina lachidziwitso chofananira ndi ID ndikuchichotsa:
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
}
}
}
Kuchotsa disk system
Diski ya OS ndi blob, yochotsa zomwe pali lamulo Remove-AzStorageBlob - koma musanachite, muyenera kukhazikitsa magawo ofunikira. Kuti muchite izi, muyenera kupeza dzina la chidebe chosungira chomwe chili ndi disk disk ndikuchipereka ku lamulo ili pamodzi ndi akaunti yosungiramo.
$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]
Chotsani ma blobs a disk status
Kuti tichite izi, monga momwe mumaganizira kale, timatenga chidebe chosungiramo chomwe diski imasungidwa, ndipo, poganiza kuti blob kumapeto kuli status, timadutsa magawo ofanana ndi lamulo lochotsa Remove-AzStorageBlob:
$osDiskStorageAcct | Get-AzStorageBlob -Container $osDiskContainerName -Blob "$($vm.Name)*.status" | Remove-AzStorageBlobNdipo potsiriza, timachotsa ma data disks
VM yathu ikhoza kukhala ndi ma drive ena olumikizidwa nayo. Ngati sizikufunikanso, tidzazichotsanso. Choyamba, tiyeni tikambirane. StorageProfile VM yathu ndikupeza katundu UriNgati pali ma disks angapo, timapanga kuzungulira ndi URIPa URI iliyonse, timapeza akaunti yosungira yomwe ikugwiritsidwa ntchito Get-AzStorageAccountKenako timayika URI yosungiramo kuti tichotse dzina lofunikira ndikulipereka ku lamulo lochotsa. Remove-AzStorageBlob pamodzi ndi akaunti yosungirako. Izi ndi momwe zingawonekere mu code:
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]
}
}
Ndipo kotero, "tafika pamapeto osangalatsa!" Tsopano tiyenera kusonkhanitsa zidutswa zonsezi kuti zikhale zogwirizana. Wolemba wachifundo Adam Bertram adayesetsa kuthandiza ogwiritsa ntchito ndipo adazichita yekha. Nawu ulalo wopita ku script yomaliza, yotchedwa Chotsani-AzrVirtualMachine.ps1:
→
Ndikukhulupirira kuti mupeza malangizo othandizawa kuti musunge nthawi, khama, komanso ndalama mukamagwira ntchito ndi ma Azure VM.
Source: www.habr.com
