在 Azure PowerShell Runbook 中更改 Azure Blob 存储层
Change Azure Blob Storage Tier in Azure PowerShell Runbook
我发现有几篇文章使用 ICloudBlob.SetStandardBlobTier("Archive")
来更改 CloudBlockBlob
的等级。因此,我将我想要 运行 放在 Azure PowerShell Runbook 中的以下脚本放在一起。
Import-Module Azure
#Define storage account information
$StorageAccount = "xxxxx"
$StorageAccountKey = "xxxxx"
$containername = "xxxxx"
#Create a storage context
$context = New-AzureStorageContext -StorageAccountName $StorageAccount -StorageAccountKey $StorageAccountKey
# Get the blobs
$blobs = Get-AzureStorageBlob -Container $containername -Context $context
$blob = $blobs[0]
$blob.SetStandardBlobTier("Archive")
但这会产生以下错误消息
Method invocation failed because [Microsoft.WindowsAzure.Commands.Storage.Model.ResourceModel.AzureStorageBlob] does
not contain a method named 'SetStandardBlobTier'.
At line:15 char:1
+ $blob.SetStandardBlobTier("Archive")
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : MethodNotFound
当我调用Write-Output $blobs[0].ICloudBlob | Get-Member
时,我的对象似乎真的没有这样的方法:
[...]
RenewLease Method void RenewLease(Microsoft.WindowsAzure.Storage.AccessCondition accessConditi...
RenewLeaseAsync Method System.Threading.Tasks.Task RenewLeaseAsync(Microsoft.WindowsAzure.Storage.A...
SetMetadata Method void SetMetadata(Microsoft.WindowsAzure.Storage.AccessCondition accessCondit...
SetMetadataAsync Method System.Threading.Tasks.Task SetMetadataAsync(), System.Threading.Tasks.Task ...
SetProperties Method void SetProperties(Microsoft.WindowsAzure.Storage.AccessCondition accessCond...
SetPropertiesAsync Method System.Threading.Tasks.Task SetPropertiesAsync(), System.Threading.Tasks.Tas...
Snapshot Method Microsoft.WindowsAzure.Storage.Blob.CloudBlob Snapshot(System.Collections.Ge...
SnapshotAsync Method System.Threading.Tasks.Task[Microsoft.WindowsAzure.Storage.Blob.CloudBlob] S...
StartCopy Method string StartCopy(Microsoft.WindowsAzure.Storage.File.CloudFile source, Micro...
StartCopyAsync Method System.Threading.Tasks.Task[string] StartCopyAsync(Microsoft.WindowsAzure.St...
StartCopyFromBlob Method string StartCopyFromBlob(Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob ...
StartCopyFromBlobAsync Method System.Threading.Tasks.Task[string] StartCopyFromBlobAsync(Microsoft.Windows...
ToString Method string ToString()
UploadFromByteArray Method void UploadFromByteArray(byte[] buffer, int index, int count, Microsoft.Wind...
[...]
我什至不知道如何从对象中读取当前层。我查看了属性和元数据,但没有成功。
我可以重现你的问题,你使用的命令是旧的,按照步骤解决问题。
导航到您的 runbook 所在门户中的 automation account
-> Modules
-> 检查您是否有模块 Az.Accounts 1.6.2
和 Az.Storage 1.6.0
,如果没有,在 Browse Gallery
-> 中搜索它们并 Import
(注意 Az.Storage 1.6.0
是 Az.Storage
的依赖项,因此您需要先导入 Az.Accounts 1.6.2
)。
如果您已经拥有它们的旧版本,只需单击它们即可删除并导入最新版本,如上所示。
然后在你的 runbook 中,使用下面的命令,它在我这边工作正常。
#Define storage account information
$StorageAccount = "xxxxx"
$StorageAccountKey = "xxxxx"
$containername = "xxxxx"
#Create a storage context
$context = New-AzStorageContext -StorageAccountName $StorageAccount -StorageAccountKey $StorageAccountKey
# Get the blobs
$blobs = Get-AzStorageBlob -Container $containername -Context $context
$blob = $blobs[0]
$blob.ICloudBlob.SetStandardBlobTier("Archive")
我发现有几篇文章使用 ICloudBlob.SetStandardBlobTier("Archive")
来更改 CloudBlockBlob
的等级。因此,我将我想要 运行 放在 Azure PowerShell Runbook 中的以下脚本放在一起。
Import-Module Azure
#Define storage account information
$StorageAccount = "xxxxx"
$StorageAccountKey = "xxxxx"
$containername = "xxxxx"
#Create a storage context
$context = New-AzureStorageContext -StorageAccountName $StorageAccount -StorageAccountKey $StorageAccountKey
# Get the blobs
$blobs = Get-AzureStorageBlob -Container $containername -Context $context
$blob = $blobs[0]
$blob.SetStandardBlobTier("Archive")
但这会产生以下错误消息
Method invocation failed because [Microsoft.WindowsAzure.Commands.Storage.Model.ResourceModel.AzureStorageBlob] does
not contain a method named 'SetStandardBlobTier'.
At line:15 char:1
+ $blob.SetStandardBlobTier("Archive")
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : MethodNotFound
当我调用Write-Output $blobs[0].ICloudBlob | Get-Member
时,我的对象似乎真的没有这样的方法:
[...]
RenewLease Method void RenewLease(Microsoft.WindowsAzure.Storage.AccessCondition accessConditi...
RenewLeaseAsync Method System.Threading.Tasks.Task RenewLeaseAsync(Microsoft.WindowsAzure.Storage.A...
SetMetadata Method void SetMetadata(Microsoft.WindowsAzure.Storage.AccessCondition accessCondit...
SetMetadataAsync Method System.Threading.Tasks.Task SetMetadataAsync(), System.Threading.Tasks.Task ...
SetProperties Method void SetProperties(Microsoft.WindowsAzure.Storage.AccessCondition accessCond...
SetPropertiesAsync Method System.Threading.Tasks.Task SetPropertiesAsync(), System.Threading.Tasks.Tas...
Snapshot Method Microsoft.WindowsAzure.Storage.Blob.CloudBlob Snapshot(System.Collections.Ge...
SnapshotAsync Method System.Threading.Tasks.Task[Microsoft.WindowsAzure.Storage.Blob.CloudBlob] S...
StartCopy Method string StartCopy(Microsoft.WindowsAzure.Storage.File.CloudFile source, Micro...
StartCopyAsync Method System.Threading.Tasks.Task[string] StartCopyAsync(Microsoft.WindowsAzure.St...
StartCopyFromBlob Method string StartCopyFromBlob(Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob ...
StartCopyFromBlobAsync Method System.Threading.Tasks.Task[string] StartCopyFromBlobAsync(Microsoft.Windows...
ToString Method string ToString()
UploadFromByteArray Method void UploadFromByteArray(byte[] buffer, int index, int count, Microsoft.Wind...
[...]
我什至不知道如何从对象中读取当前层。我查看了属性和元数据,但没有成功。
我可以重现你的问题,你使用的命令是旧的,按照步骤解决问题。
导航到您的 runbook 所在门户中的 automation account
-> Modules
-> 检查您是否有模块 Az.Accounts 1.6.2
和 Az.Storage 1.6.0
,如果没有,在 Browse Gallery
-> 中搜索它们并 Import
(注意 Az.Storage 1.6.0
是 Az.Storage
的依赖项,因此您需要先导入 Az.Accounts 1.6.2
)。
如果您已经拥有它们的旧版本,只需单击它们即可删除并导入最新版本,如上所示。
然后在你的 runbook 中,使用下面的命令,它在我这边工作正常。
#Define storage account information
$StorageAccount = "xxxxx"
$StorageAccountKey = "xxxxx"
$containername = "xxxxx"
#Create a storage context
$context = New-AzStorageContext -StorageAccountName $StorageAccount -StorageAccountKey $StorageAccountKey
# Get the blobs
$blobs = Get-AzStorageBlob -Container $containername -Context $context
$blob = $blobs[0]
$blob.ICloudBlob.SetStandardBlobTier("Archive")