Me ka hoʻohana ʻana iā PowerShell, nā mea ʻenekinia a me nā luna hoʻokele IT e hoʻomaʻamaʻa i nā hana like ʻole i ka hana ʻana ʻaʻole wale me ka hale, akā me nā ʻōnaehana kapuaʻi, ʻoiai me Azure. I kekahi mau hihia, ʻoi aku ka maʻalahi o ka hana ʻana ma PowerShell a ʻoi aku ka wikiwiki ma mua o ka hana ʻana ma o ka Azure portal. Mahalo i kona ʻano cross-platform, hiki ke hoʻohana ʻia ʻo PowerShell ma kekahi ʻōnaehana hana.
Inā ʻoe e holo ana i ka Ubuntu, Red Hat, a i ʻole Windows, hiki i ka PowerShell ke kōkua iā ʻoe e hoʻomalu i kāu kumuwaiwai ao. Ke hoʻohana nei i ka module
Ma kēia ʻatikala, e nānā mākou pehea e hiki ai iā ʻoe ke hoʻohana i ka PowerShell e hoʻololi i kahi VM i ke ao Azure, a me ka holoi ʻana i kahi VM a me kāna mau mea pili.
Mea nui! Mai poina e holoi i kou mau lima me ka sanitizer e hoʻomākaukau ai no ka hana:
- Pono ʻoe i kahi module ʻO Azure PowerShell Module - hiki ke hoʻoiho ʻia mai PowerShell Gallery me ke kauoha
Install-Module Az
. - Pono ʻoe e hōʻoia i ke ao Azure kahi e holo ai ka mīkini virtual ma ka holo ʻana i ke kauoha
Connect-AzAccount
.
ʻO ka mea mua, e hana mākou i kahi palapala e hoʻololi i kahi Azure VM. E wehe kākou i ka VS Code a mālama i kahi palapala PowerShell hou i kapa ʻia Hoʻololi i ka nui-AzVirtualMachine.ps1 - e hoʻohui mākou i nā ʻāpana code iā ia e like me ka holomua o ka laʻana.
Noi mākou i nā nui VM i loaʻa
Ma mua o kou hoʻololi ʻana i ka nui o ka VM, pono ʻoe e ʻike i nā nui e ʻae ʻia no nā mīkini virtual i ke ao Azure. No ka hana ʻana i kēia pono ʻoe e holo i ke kauoha Get-AzVMSize
.
No laila no ka mīkini virtual devvm01 mai ka hui waiwai make Noi mākou i nā nui ʻae ʻia a pau:
Get-AzVMSize -ResourceGroupName dev -VMName devvm01
(Ma nā pilikia maoli, ʻoiaʻiʻo, ma kahi o ResourceGroupName=dev и VMName=devvm01 e kuhikuhi ʻoe i kāu mau waiwai ponoʻī no kēia mau ʻāpana.)
E hoʻihoʻi ke kauoha e like me kēia:
ʻO kēia nā koho nui hiki ke hoʻonohonoho ʻia no kahi mīkini virtual i hāʻawi ʻia.
E hoʻololi hou i ke kaʻa
No ka laʻana, e hoʻololi mākou i ka nui hou Kūlana_B1ls - aia ʻo ia ma kahi mua ma ka papa inoa ma luna. (Ma nā noi ola maoli, ʻoiaʻiʻo, koho ʻoe i ka nui āu e makemake ai.)
- E hoʻohana mua i ke kauoha
Get-AzVM
loaʻa iā mākou ka ʻike e pili ana i kā mākou mea (mekini virtual) ma ka mālama ʻana iā ia i kahi loli$virtualMachine
:$virtualMachine = Get-AzVM -ResourceGroupName dev -VMName devvm01
- A laila lawe mākou i ka waiwai mai kēia mea
.HardwareProfile.VmSize
a hoʻonoho i ka waiwai hou i makemake ʻia:$virtualMachine.HardwareProfile.VmSize = "Standard_B1ls"
- A i kēia manawa, hoʻokō wale mākou i ke kauoha VM update -
Update-AzVm
:Update-AzVM -VM devvm01 -ResourceGroupName dev
- Hoʻomaopopo mākou ua holo pono nā mea a pau - no ka hana ʻana i kēia, noi hou mākou i ka ʻike e pili ana i kā mākou mea a nānā i ka waiwai
$virtualMachine.HardwareProfile
:$virtualMachine = Get-AzVM -ResourceGroupName dev -VMName devvm01 $virtualMachine.HardwareProfile
Inā mākou e ʻike ma laila Kūlana_B1ls - 'o ia ho'i ua pololei nā mea a pau, ua ho'ololi 'ia ka nui o ke ka'a. Hiki iā ʻoe ke hele hou a kūkulu i kāu kūleʻa ma ka hoʻololi ʻana i kekahi mau VM i ka manawa hoʻokahi me ka hoʻohana ʻana i kahi array.
Pehea e hoʻopau ai i kahi VM ma Azure?
Me ka holoi ʻana, ʻaʻole maʻalahi a maʻalahi nā mea āpau e like me ka mea i manaʻo ʻia. Ma hope o nā mea a pau, pono e wehe i kekahi mau kumuwaiwai e pili ana i kēia mīkini, me:
- Nā pahu hoʻopaʻa diagnostics boot
- Nā pūnaewele kikowaena
- Helu IP lehulehu
- Pūnaehana disk a me ka blob kahi i mālama ʻia ai kona kūlana
- Nā diski ʻikepili
No laila, e hana mākou i kahi hana a kāhea aku Remove-AzrVirtualMachine
- a e holoi ia ʻaʻole wale ʻo Azure VM, akā ʻo nā mea a pau i luna.
Hele mākou i ke ala maʻamau a loaʻa mua i kā mākou mea (VM) me ka hoʻohana ʻana i ke kauoha Get-AzVm
. Eia kekahi laʻana, e lilo ia i kaʻa WINSRV19 mai ka hui waiwai MyTestVMs.
E mālama kākou i kēia mea me kona mau waiwai a pau i loko o ka loli $vm
:
$vm = Get-AzVm -Name WINSRV19 -ResourceGroupName MyTestVMs
Ke wehe nei i ka pahu me nā faila diagnostic boot
I ka hana ʻana i kahi VM ma Azure, noi ʻia ka mea hoʻohana e hana i kahi pahu no ka mālama ʻana i nā diagnostics boot (boot diagnostics container), no laila inā he pilikia me ka booting, aia kekahi mea e huli ai no ka hoʻoponopono pilikia. Eia naʻe, ke holoi ʻia ka VM, waiho ʻia kēia pahu e hoʻomau i kona ola kumu ʻole. E hoʻoponopono kākou i kēia kūlana.
- ʻO ka mea mua, e ʻike kākou i ka waihona waihona no kēia pahu - no kēia pono mākou e ʻimi i ka waiwai
storageUri
i loko o ka ʻōpū o ka meaDiagnosticsProfile
ko makou VM. No kēia, hoʻohana wau i kēia ʻōlelo maʻamau:$diagSa = [regex]::match($vm.DiagnosticsProfile.bootDiagnostics.storageUri, '^http[s]?://(.+?)\.').groups[1].value
- I kēia manawa pono ʻoe e ʻike i ka inoa o ka pahu, a no kēia pono ʻoe e kiʻi i ka VM ID me ka hoʻohana ʻana i ke kauoha
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)
- A laila, loaʻa iā mākou ka inoa o ka pūʻulu waiwai nona ka ipu:
$diagSaRg = (Get-AzStorageAccount | where { $_.StorageAccountName -eq $diagSa }).ResourceGroupName
- A i kēia manawa, loaʻa iā mākou nā mea a pau e pono ai mākou e holoi i ka pahu me ke kauoha
Remove-AzStorageContainer
:$saParams = @{ 'ResourceGroupName' = $diagSaRg 'Name' = $diagSa } Get-AzStorageAccount @saParams | Get-AzStorageContainer | where { $_.Name-eq $diagContainerName } | Remove-AzStorageContainer -Force
Ke wehe nei i ka VM
I kēia manawa, e holoi mākou i ka mīkini virtual ponoʻī, ʻoiai ua hana mākou i kahi loli $vm
no ka mea pili. ʻAe, e holo kāua i ke kauoha Remove-AzVm
:
$null = $vm | Remove-AzVM -Force
Ke wehe nei i ke kikowaena pūnaewele a me ka helu IP lehulehu
Loaʻa i kā mākou VM hoʻokahi (a i ʻole kekahi) mau kikowaena pūnaewele (NIC) - no ka wehe ʻana iā lākou me he mea pono ʻole, e hele kāua i ka waiwai. NetworkInterfaces
kā mākou mea VM a holoi i ka NIC me ke kauoha Remove-AzNetworkInterface
. Inā ʻoi aku ma mua o hoʻokahi kikowaena pūnaewele, hoʻohana mākou i kahi loop. I ka manawa like, no kēlā me kēia NIC e nānā mākou i ka waiwai IpConfiguration
e hoʻoholo inā loaʻa i ka interface kahi IP IP lehulehu. Inā loaʻa kekahi, e wehe mākou me ke kauoha Remove-AzPublicIpAddress
.
Eia kekahi laʻana o ia code, kahi e nānā ai mākou i nā NIC a pau i loko o kahi loop, holoi iā lākou, a nānā inā he IP lehulehu. Inā loaʻa, e hoʻokaʻawale i ka waiwai PublicIpAddress
, e huli i ka inoa o ka punawai e pili ana ma ka ID a holoi ia:
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
}
}
}
Ke wehe nei i ka disk system
He blob ka OS disk, nona ke kauoha e holoi Remove-AzStorageBlob
- akā ma mua o ka hoʻokō ʻana, pono ʻoe e hoʻonohonoho i nā waiwai i koi ʻia no kāna mau ʻāpana. No ka hana ʻana i kēia, pono ʻoe e kiʻi i ka inoa o ka pahu waihona i loaʻa i ka disk system, a laila e hāʻawi iā ia i kēia kauoha me ka waihona waihona e pili ana.
$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]
Ke wehe nei i ka System Disk Status Blob
No ka hana ʻana i kēia, e like me kāu i manaʻo mua ai, lawe mākou i ka pahu waihona kahi i mālama ʻia ai kēia disk, a, e hōʻike ana aia ka blob ma ka hopena. status
, hāʻawi i nā ʻāpana pili i ke kauoha holoi Remove-AzStorageBlob
:
$osDiskStorageAcct | Get-AzStorageBlob -Container $osDiskContainerName -Blob "$($vm.Name)*.status" | Remove-AzStorageBlob
A ʻo ka hope, wehe mākou i nā disks data
Hiki i kā mākou VM ke loaʻa nā disks me nā ʻikepili i hoʻopili ʻia me ia. Inā ʻaʻole pono lākou, e holoi pū mākou iā lākou. E wehewehe mua kākou StorageProfile
kā mākou VM a loaʻa ka waiwai Uri
. Inā nui nā disks, hoʻonohonoho mākou i kahi pōʻai e like me URI
. No kēlā me kēia URI, e ʻike mākou i ka waihona waihona e hoʻohana ai Get-AzStorageAccount
. A laila e hoʻokaʻawale i ka waihona URI e wehe i ka inoa blob i makemake ʻia a hāʻawi iā ia i ke kauoha holoi Remove-AzStorageBlob
me kahi waihona waihona. ʻO kēia ke ʻano o ke 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]
}
}
A i kēia manawa "ua hiki mākou i ka hopena hauʻoli!" I kēia manawa pono mākou e hōʻuluʻulu i kahi hoʻokahi mai kēia mau ʻāpana āpau. Ua hui ka mea kākau ʻoluʻolu ʻo Adam Bertram i nā mea hoʻohana i ka hapalua a hana iā ia iho. Eia kahi loulou i ka palapala hope i kapa ʻia Wehe-AzrVirtualMachine.ps1:
→
Manaʻo wau e ʻike ʻoe i kēia mau ʻōlelo aʻoaʻo kōkua i ka mālama ʻana i kāu hoʻoikaika, manawa, a me ke kālā ke hana pū me Azure VMs.
Source: www.habr.com