6

Jak rozbić dzierżawę przedmiotu w Blob Storage z wykorzystaniem PowerShell?Jak rozbić dzierżawę Blob Storage na platformie Azure za pomocą PowerShell?

Otrzymuję następujący gdy próbuje przesłać coś nad bieżącego obrazu:

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

I odpowiedział podobne pytanie niedawno, [tutaj] (http://stackoverflow.com/a/34364494/272109), dotyczące niezdolności do zerwania dzierżawy. Zwykle jest to spowodowane wciąż istniejącym obiektem Disk, związanym z (i dzierżawiącym) przedmiotem blobu strony vhd. W mojej odpowiedzi pokażę, gdzie znaleźć listę dysków (w starym i nowym portalu). Jeśli okaże się, że tak jest, prawdopodobnie usuniesz obiekt Disk za pomocą PowerShell, a także za pośrednictwem portalu. –

+0

Dzięki. W moim przypadku dużo łatwiej było po prostu zwolnić dzierżawę w PowerShellu, załadować nowy VHD z dokładną nazwą pliku i uruchomić kopię zapasową maszyny wirtualnej. – Doug

+1

[Ten skrypt] (https://gallery.technet.microsoft.com/scriptcenter/How-to-break-the-locked-c2cd6492#content) zgodnie z zaleceniami [tutaj] (https://docs.microsoft.com/ en-us/azure/storage/storage-can not-delete-storage-account-container-vhd # lf-content = 177489778: 625507403) nie działa dla mnie. Zainstalowałem [Storage Explorer] (http://storageexplorer.com/). Rt.Kliknij na pojemnik "Break Lease". I działało .... –

Odpowiedz

2

leasingu jest prawdopodobnie z czymś takim VM, lub coś innego za pomocą bloga Storage. W rezultacie ręczne zwolnienie dzierżawy może spowodować problemy.

Z powiedział, że następujące polecenia PowerShell powinno załatwić sprawę:

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

Jeśli jej VM, powinien pojawić się następujący post na usunięciu dysku: Cannot delete blob: There is currently a lease on the blob and no lease ID was specified in the request

Jednakże, jeśli po prostu chcesz wymienić dysk używany przez każdą maszynę, która używa danego obiektu typu blob, zatrzymując maszynę wirtualną, zwalniając dzierżawę, przesyłając nowy obraz i uruchamiając maszynę wirtualną, wydaje się działać.

+1

Możesz potrzebować nazwy grupy zasobów, jeśli używasz 'Get-AzureRmStorageAccount' oraz nazwy obiektu typu blob dla' Get-AzureStorageBlob': 'Get-AzureRmStorageAccount -ResourceGroupName -Nazwa | Get-AzureStorageBlob -Blob -Container ). ICloudBlob.BreakLease() ' –

5

Logowanie do starego portalu i przejdź do maszyn wirtualnych wtedy Obrazy zakładka url będą https://manage.windowsazure.com/@yourname.onmicrosoft.com#Workspaces/VirtualMachineExtension/images. Wybierz obraz i wybierz Usuń na dole.

enter image description here

Następnie przejdź do przechowywania i usuń go.

Można również wypróbować następujące elementy, które usuwają obiekty typu blob dla danego pojemnika, a następnie usuwają pojemnik.

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 

Jeśli chcesz złamać pieczęć na blob można użyć 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." 
     } 

Jeśli chcesz skrypt do zasobów ARM można użyć How to break the locked lease of blob storage by ARM in Microsoft Azure(PowerShell)