6

Wie kann ich einen Leasingvertrag für einen Artikel im Blob Storage mit PowerShell brechen?Wie wird eine Lease für Blob Storage in Azure mit PowerShell aufgehoben?

Ich erhalte die folgenden, wenn etwas über das aktuelle Bild zu laden versuchen:

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

ich beantwortet ähnliche Frage vor kurzem, [hier] (http://stackoverflow.com/a/34364494/272109), in Bezug auf die Unfähigkeit, einen Mietvertrag zu brechen. Dies liegt in der Regel daran, dass ein Disk-Objekt immer noch vorhanden ist und sich auf das fragliche vhd-Seiten-Blob bezieht (und einen Lease-Vorgang hat). In meiner Antwort zeige ich, wo die Liste der Festplatten (im alten und neuen Portal) zu finden ist. Wenn dies der Fall ist, können Sie das Disk-Objekt wahrscheinlich sowohl über die PowerShell als auch über das Portal löschen. –

+0

Danke. In meinem Fall war es viel einfacher, einfach die Lease in PowerShell freizugeben, eine neue VHD auf denselben exakten Dateinamen hochzuladen und die VM-Sicherung zu starten. – Doug

+1

[Dieses Skript] (https://gallery.technet.microsoft.com/scriptcenter/How-to-break-the-locked-c2cd6492#content) wie empfohlen [hier] (https://docs.microsoft.com/ de-de/azure/storage/storage-kann nicht löschen-storage-account-container-vhd # lf-content = 177489778: 625507403) hat nicht für mich funktioniert. Ich habe [Speicher-Explorer] (http://storageexplorer.com/) installiert. Rt.Clicked auf dem Container "Break Lease". Und es funktionierte .... –

Antwort

2

Der Mietvertrag von so etwas wie eine VM wahrscheinlich ist, oder etwas anderes des Blog-Speicher. Als Folge könnte das manuelle Freigeben des Leases zu Problemen führen.

Mit dieser sagte, die folgenden Powershell-Befehl den Trick tun sollten:

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

Wenn ihr eine VM, sollten Sie den folgenden Beitrag auf das Entfernen der Platte sehen: Cannot delete blob: There is currently a lease on the blob and no lease ID was specified in the request

Wenn Sie jedoch Sie möchten lediglich das Laufwerk ersetzen, das von jedem Computer verwendet wird, der den angegebenen Blob verwendet, die VM stoppen, die Lease freigeben, ein neues Image hochladen und die VM starten.

+1

Sie benötigen möglicherweise den Namen der Ressourcengruppe, wenn Sie 'Get-AzureRmStorageAccount' und den Blobnamen für' Get-AzureStorageBlob' verwenden: 'Get-AzureRmStorageAccount -ResourceGroupName -Name | Get-AzureStorageBlob -Blob -Container ). ICloudBlob.BreakLease() ' –

5

Anmeldung zum alten Portal und navigieren Sie zu den Virtual Machines dann die Bilder Registerkarte wird die URL https://manage.windowsazure.com/@yourname.onmicrosoft.com#Workspaces/VirtualMachineExtension/images. Wählen Sie das Bild und wählen auf dem Boden löschen.

enter image description here

Danach auf die Speicher gehen und löschen.

Sie können auch Folgendes versuchen, die Blobs für einen bestimmten Container entfernen und dann den Container entfernen.

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 

Wenn Sie ein Siegel auf einem Klecks brechen wollen, können Sie das verwenden 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." 
     } 

Wenn Sie für ARM-Ressourcen zu einem Skript möchten, können Sie das verwenden How to break the locked lease of blob storage by ARM in Microsoft Azure(PowerShell)