PowerShell, fabrum et IT administratores utentes varia negotia feliciter automate, cum non solum cum praemissis, sed etiam cum substructionibus nubeculis, praesertim cum Azure. In quibusdam, per PowerShell operando multo commodius et velocius est quam operando per portal caeruleam. Propter naturam crucis suggestus, PowerShell operandi ratio adhiberi potest.
Utrum curris Ubuntu, Rubrum Hat, vel Fenestra, PowerShell adiuvare vos potest tuam nubem moderari facultates. Utens modulus
In hoc articulo, intuebimur quomodo PowerShell uti potes ad resize a VM in nube caerulea, tum a VM delere et obiecta consociata.
Magni momenti! Noli oblivisci manus tuas extergere cum sanitizer parare ad opus:
- Modulus erit opus Caeruleus PowerShell amet - deponi potest ex PowerShell Gallery cum mandato
Install-Module Az
. - Opus authenticitatis in nube caerulea ubi virtualis apparatus currit mandatum
Connect-AzAccount
.
Primum faciamus scriptum quod caeruleum VM resizet. Aperiamus VS Codicem et nisi novum scriptorum PowerShell vocatum est Resize-AzVirtualMachine.ps1 β fragmenta codicis adjiciemus pro exemplo procedente.
Rogamus praesto VM magnitudinum
Priusquam magnitudinem VM mutes, debes invenire quaenam magnitudinum acceptabilia sint pro machinis virtualibus in nube caerulea. Ad hoc debes currere imperium Get-AzVMSize
.
Sic enim virtualis apparatus devvm01 ex resource group dev Rogamus omnia possibilia magnitudinum acceptabilia:
Get-AzVMSize -ResourceGroupName dev -VMName devvm01
(In realibus quaestionibus, utique, pro ResourceGroupName = dev ΠΈ VMName=devvm01 bona tua pro his parametris denota.
Mandatum tale aliquid reddet;
Hae sunt omnes optiones magnitudinis possibilis quae pro data machina virtuali apponi possunt.
Sit scriptor currus resize
Exempli gratia, ad novam magnitudinem resisebimus Standard_B1ls β Ipse primo loco in indice supra. (In applicationibus ad vitam realem, id est, vis quanta tibi opus est.)
- Primum per mandatum
Get-AzVM
dabimus tibi informationem de obiecto nostro (machina virtuali) per acponenda in variabili$virtualMachine
:$virtualMachine = Get-AzVM -ResourceGroupName dev -VMName devvm01
- Et ex hoc accipimus proprietatem
.HardwareProfile.VmSize
et pone valorem novum optatum;$virtualMachine.HardwareProfile.VmSize = "Standard_B1ls"
- Nunc autem simpliciter mandatum VM renovationis exequimur -
Update-AzVm
:Update-AzVM -VM devvm01 -ResourceGroupName dev
- Facimus ut omnia bene operata sint, iterum informationes petimus de obiecto nostro et proprietatem intuemur
$virtualMachine.HardwareProfile
:$virtualMachine = Get-AzVM -ResourceGroupName dev -VMName devvm01 $virtualMachine.HardwareProfile
Si videmus ibi Standard_B1ls β Qui significat omnia in ordine, magnitudinem currus mutatus est. Potes ulterius progredi et in successu tuo aedificare, resigendo plures VMs simul ordinata utendo.
Quid delendo VM in Azure?
Cum deletione non omnia tam simplicia et aperta sunt ut videatur. Ceterum necesse est plures facultates cum hac machina coniunctas removere, inclusas:
- Diagnostics tabernus continentia repono
- network interfaces
- Publica IP oratio
- Systema orbis et STILLA ubi eius status reponitur
- Data orbis
Ergo munus creabimus et appellabimus Remove-AzrVirtualMachine
- et delebit non solum Azure VM, sed etiam omnia supradicta.
Vexillum imus et primum obiectum nostrum obtinemus Get-AzVm
. Exempli gratia: sit car WINSRV19 ex resource group MyTestVMs.
Abiciamus hoc obiectum cum omnibus suis proprietatibus in variabilem $vm
:
$vm = Get-AzVm -Name WINSRV19 -ResourceGroupName MyTestVMs
Vas diagnostic files removere cum tabernus
Cum a VM in Azure creando, etiam usor rogatur ut vas diagnostica (calidi diagnostica continens), ut si difficultates cum boothbus sint, ad sollicitudinem convertendum aliquid sit. Attamen, deleta VM, hoc continens relinquitur ut nunc incassum existat. Hanc condicionem figamus.
- Primum quaeramus quidnam reponendi ratio huius continens conveniat - propter hoc necesse est ut proprietatem invenias
storageUri
in visceribus objectiDiagnosticsProfile
nostris VM. Hoc utar hac regulari locutione;$diagSa = [regex]::match($vm.DiagnosticsProfile.bootDiagnostics.storageUri, '^http[s]?://(.+?)\.').groups[1].value
- Nunc debes invenire nomen continentis, et ad hoc debes accipere VM ID cum imperio
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)
- Deinde accipitur nomen coetus subsidii ad quod continens pertinet;
$diagSaRg = (Get-AzStorageAccount | where { $_.StorageAccountName -eq $diagSa }).ResourceGroupName
- Et nunc habemus omnia, quae cum mandato delere oportet
Remove-AzStorageContainer
:$saParams = @{ 'ResourceGroupName' = $diagSaRg 'Name' = $diagSa } Get-AzStorageAccount @saParams | Get-AzStorageContainer | where { $_.Name-eq $diagContainerName } | Remove-AzStorageContainer -Force
VM removere
Nunc ipsam virtualem machinam deleamus, quia variabilem iam creavimus $vm
pro obiecto correspondente. Age, mandatum curramus Remove-AzVm
:
$null = $vm | Remove-AzVM -Force
IP oratio interface retis removere et publica
Noster VM adhuc unam (vel etiam plures) interfaces retiaculatas habet - ut eas ut necesse removeat, per possessionem eamus. NetworkInterfaces
nostrum VM objectum delere NIC cum imperio Remove-AzNetworkInterface
. Si plus quam unum interfacies retis est, ansa utimur. Simul pro NIC singulis proprietatem reprehendo IpConfiguration
statuere an interfacies IP oratio publica habeat. Si quis repertus fuerit, eam cum mandato removebimus Remove-AzPublicIpAddress
.
Hic exemplum est talis codicis iustae, ubi per omnes NICs in ansa inspicimus, eas delere, et deprime si est publica IP. Si ergo parse res PublicIpAddress
reperi nomen subsidii respondentis per ID et dele illud;
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
}
}
}
Removere systema orbis
OS orbis blob est, cui mandatum est ut eam delere Remove-AzStorageBlob
- sed antequam illud exequatur, valores requisitos pro suis parametris constituere debes. Ad hoc faciendum, in specie, nomen receptaculi in quo orbis systematis continetur, ad hoc mandatum transmittetur una cum ratione electronica respondente.
$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]
Removere Ratio Orbis Status Blob
Ad hoc faciendum, ut probabiliter iam coniectabar, receptaculum repono in quo hic orbis reponitur, et subaudiendo blob in fine contineat. status
Transire parametri correspondentes ad delete imperium Remove-AzStorageBlob
:
$osDiskStorageAcct | Get-AzStorageBlob -Container $osDiskContainerName -Blob "$($vm.Name)*.status" | Remove-AzStorageBlob
Et tandem notitias orbis removemus
Nostra VM orbes adhuc habere potuit cum notitia quae ei adnexa erant. Si non opus sunt, eas quoque delebimus. Sit scriptor prima parse StorageProfile
nostrum VM et invenire possessionem Uri
. Si plures sunt orbis, cyclum ordinamus secundum URI
. Pro unaquaque URI, inveniemus debitam rationem repono utens Get-AzStorageAccount
. Tunc parse repono URI ut extraheret nomen desideratum blob et ad delete imperium consequentes Remove-AzStorageBlob
una cum tabulario est. Hoc est quod in codice spectare videtur:
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]
}
}
Et nunc "felicem exitum pervenimus!" Nunc ex his omnibus fragmentis unum totum convenire necesse est. Auctor benignus Adam Bertram in medio utentium occurrit et id ipsum fecit. Hic ligamen ad scriptum finale quod vocatur Aufer-AzrVirtualMachine.ps1:
β
Spero te hasce apicibus utiles invenisse ad operas, tempus, et pecunias cum operando cum Azure VMs.
Source: www.habr.com