6

Come si interrompe un lease su un oggetto in Blob Storage utilizzando PowerShell?Come interrompere un lease su Archiviazione BLOB in Azure con PowerShell?

Ricevo il seguente quando si cerca di caricare qualcosa sull'immagine corrente:

Add-AzureRmVhd : The remote server returned an error: (412) There is currently a lease on the blob and no lease ID was specified in the request.. 
At line:1 char:1 
+ Add-AzureRmVhd -Destination $osDiskUri -LocalFilePath $localFileName ... 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : CloseError: (:) [Add-AzureRmVhd], StorageException 
    + FullyQualifiedErrorId : Microsoft.Azure.Commands.Compute.StorageServices.AddAzureVhdCommand 
+0

mi risponde una domanda simile recentemente, [qui] (http://stackoverflow.com/a/34364494/272109), riguardante l'impossibilità di rompere un leasing. È in genere dovuto a un oggetto Disk ancora esistente, relativo a (e che ha un lease in) il blob della pagina vhd in questione. Nella mia risposta, mostro dove trovare l'elenco dei dischi (nel vecchio e nel nuovo portale). Se ciò si verifica, è possibile eliminare l'oggetto Disk tramite PowerShell e tramite il portale. –

+0

Grazie. Nel mio caso è diventato molto più semplice rilasciare semplicemente il lease in PowerShell, caricare un nuovo VHD con lo stesso identico nome di file e avviare il backup della VM. – Doug

+1

[Questo script] (https://gallery.technet.microsoft.com/scriptcenter/How-to-break-the-locked-c2cd6492#content) come consigliato [qui] (https://docs.microsoft.com/ en-us/azure/storage/storage-can not-delete-account-storage-container-vhd # lf-content = 177489778: 625507403) non ha funzionato per me. Ho installato [Storage Explorer] (http://storageexplorer.com/). Rt.Cliccato sul contenitore "Break Lease". E ha funzionato ... –

risposta

2

Il contratto è probabile che da qualcosa di simile a una macchina virtuale, o qualcos'altro con il Blog di archiviazione. Di conseguenza il rilascio manuale del leasing potrebbe causare problemi.

con quello detto, il seguente comando PowerShell dovrebbe fare il trucco:

Get-AzureRmStorageAccount -Name "STORAGE_ACCOUNT_NAME" | Get-AzureStorageBlob -name "CONTAINER_NAME").ICloudBlob.BreakLease() 

Se la sua una macchina virtuale, si dovrebbe vedere il seguente post sulla rimozione del disco: Cannot delete blob: There is currently a lease on the blob and no lease ID was specified in the request

Tuttavia, se si semplicemente vuole sostituire l'unità utilizzata da ogni macchina che utilizza il dato blob, arrestare la VM, rilasciare il lease, caricare una nuova immagine e avviare la VM sembra funzionare.

+1

Potrebbe essere necessario il nome del gruppo di risorse se si utilizza "Get-AzureRmStorageAccount' e il nome blob per" Get-AzureStorageBlob ": ' Get-AzureRmStorageAccount -ResourceGroupName -Name | Get-AzureStorageBlob -Blob -Container ). ICloudBlob.BreakLease() ' –

5

Login al vecchio portale e accedere alla macchine virtuali poi i Immagini scheda l'url sarà https://manage.windowsazure.com/@yourname.onmicrosoft.com#Workspaces/VirtualMachineExtension/images. selezionare l'immagine e scegliere Elimina sul fondo.

enter image description here

Dopo di che andare al vostro storage ed eliminarlo.

È anche possibile provare quanto segue che rimuoverà i BLOB per un determinato contenitore e quindi rimuoverà il contenitore.

Add-AzureAccount 
Get-AzureSubscription | Format-Table SubscriptionName, IsDefault, IsCurrent, CurrentStorageAccountName 

$SubscriptionName = 'Your subsscription name' 
Select-AzureSubscription -SubscriptionName $SubscriptionName 

Get-AzureSubscription -Default 

Get-AzureStorageAccount | Format-Table -Property StorageAccountName, Location, AccountType, StorageAccountStatus 

$StorageAccountName = "Your storage account" 
$StorageAccountKey = (Get-AzureStorageKey -StorageAccountName $StorageAccountName).Primary 
$ContainerName = "Your container name" 
$Context = New-AzureStorageContext -StorageAccountName $StorageAccountName -StorageAccountKey $StorageAccountKey 

#Get a reference to all the blobs in the container. 
$blobs = Get-AzureStorageBlob -Container $ContainerName -Context $Context 

#Delete blobs in a specified container. 
$blobs| Remove-AzureStorageBlob 

Remove-AzureStorageContainer -Container $ContainerName -Context $Context 

Se si vuole rompere un sigillo su un blob è possibile utilizzare il How to break the locked lease of blob storage in Microsoft Azure (PowerShell)

1
$key = (Get-AzureRmStorageAccountKey -ResourceGroupName $selectedStorageAccount.ResourceGroupName -name $selectedStorageAccount.StorageAccountName -ErrorAction Stop)[0].value 
     $storageContext = New-AzureStorageContext -StorageAccountName $selectedStorageAccount.StorageAccountName -StorageAccountKey $key -ErrorAction Stop 
     $storageContainer = Get-AzureStorageContainer -Context $storageContext -Name $ContainerName -ErrorAction Stop 
     $blob = Get-AzureStorageBlob -Context $storageContext -Container $ContainerName -Blob $BlobName -ErrorAction Stop   
     $leaseStatus = $blob.ICloudBlob.Properties.LeaseStatus; 
     If($leaseStatus -eq "Locked") 
     { 
      $blob.ICloudBlob.BreakLease() 
      Write-Host "Successfully broken lease on '$BlobName' blob." 
     } 
     Else 
     { 
      #$blob.ICloudBlob.AcquireLease($null, $null, $null, $null, $null) 
      Write-Host "The '$BlobName' blob's lease status is unlocked." 
     } 

Se si desidera uno script per le risorse ARM è possibile utilizzare il How to break the locked lease of blob storage by ARM in Microsoft Azure(PowerShell)