Modificare ac delendo caeruleum VMs utens PowerShell

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 Caeruleus PowerShellexempli gratia, quaslibet machinarum virtualium proprietates ponere potes.

In hoc articulo, intuebimur quomodo PowerShell uti potes ad resize a VM in nube caerulea, tum a VM delere et obiecta consociata.

Modificare ac delendo caeruleum VMs utens PowerShell

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;

Modificare ac delendo caeruleum VMs utens PowerShell

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.)

  1. 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
  2. Et ex hoc accipimus proprietatem .HardwareProfile.VmSize et pone valorem novum optatum;
    $virtualMachine.HardwareProfile.VmSize = "Standard_B1ls"
  3. Nunc autem simpliciter mandatum VM renovationis exequimur - Update-AzVm:
    Update-AzVM -VM devvm01 -ResourceGroupName dev
  4. 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.

  1. Primum quaeramus quidnam reponendi ratio huius continens conveniat - propter hoc necesse est ut proprietatem invenias storageUri in visceribus objecti DiagnosticsProfile nostris VM. Hoc utar hac regulari locutione;
    $diagSa = [regex]::match($vm.DiagnosticsProfile.bootDiagnostics.storageUri, '^http[s]?://(.+?)\.').groups[1].value
  2. 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)
    
  3. Deinde accipitur nomen coetus subsidii ad quod continens pertinet;
    $diagSaRg = (Get-AzStorageAccount | where { $_.StorageAccountName -eq $diagSa }).ResourceGroupName
  4. 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 PublicIpAddressreperi 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. statusTransire 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:

β†’ GitHub

Spero te hasce apicibus utiles invenisse ad operas, tempus, et pecunias cum operando cum Azure VMs.

Source: www.habr.com