用于修改Azure Blob存储中对象的ContentType的Powershell函数

时间:2019-04-30 08:59:10

标签: azure powershell azure-storage

我正在尝试在Powershell中编写一个函数,该函数将特定容器中的Blob设置为某种类型,因为它们始终以JwtAccessTokenConverter类型编写,这会导致下游应用程序出现问题。我已经编写了以下函数,但它返回错误application/octet-stream

我想知道是否有解决办法?我知道可以在Azure Storage Explorer中手动设置该属性,但这是日常任务。

功能:

'ContentType' is a ReadOnly property.

2 个答案:

答案 0 :(得分:0)

因此,根据评论中的链接,请尝试使用此解决方案。

 Function Set-ContentType {

    Param (
        [string]$accountName,
        [string]$accessKey,
        [string]$storageContainer
    )

    # Connect to blob storage and get blobs
    $context = New-AzureStorageContext -StorageAccountName $accountName -StorageAccountKey $accessKey
    $blobs = Get-AzureStorageBlob -Container $storageContainer -Context $context -Blob $fileMask

    foreach ($blob in $blobs) {
        if ($blob.ContentType -eq $genericMIME) {
            $blob.Properties.ContentType = $targetMIME
            $blob.SetProperties()
        }
    }
 }

答案 1 :(得分:0)

我通过编写一个替代的上传脚本解决了自己的问题,该脚本在编写Blob时定义了ContentType:

 Function UploadFile {

    Param (
        [string]$accountName,
        [string]$accessKey
    )

    $context = New-AzureStorageContext -StorageAccountName $accountName -StorageAccountKey $accessKey

    $files = Get-ChildItem $workingDir -Filter $fileMask

    foreach ($file in $files) {
        Set-AzureStorageBlobContent -File $file.FullName -Container $container -Properties @{"ContentType" = "$targetMIME"} -Context $context -Force
    }
 }