Переименуйте лазурную каплю с определенным условием - PullRequest
0 голосов
/ 31 октября 2019

У меня есть учетная запись хранения с тестовым контейнером, и этот контейнер содержит 24 папки, а каждая папка содержит n номеров BLOB-объектов. То, что я хочу, это переименовать всю папку и вложенный блоб в Pic 1, чтобы точно так же, как в Pic 2.

enter image description here enter image description here

Я использовал этот сценарий переименования: Как переименовать файл BLOB с помощью powershell

Но приведенный выше сценарий полезен для одного или двух BLOB-объектов, и этот сценарий не переименовывает папку (этоможно решить, скопировав BLOB-объект в новое место), где, как и в моем случае, у меня есть n BLOB-объект, с которым я пытался заняться:

$textinfo = (Get-Culture).TextInfo
$text2=($textinfo.ToTitleCase($text)).Split(" ")

Но это также не помогает, поскольку он переименует обмен на обмен , но не ExchangeRate (и это реальное требование). Я думал об этом:

foreach($file in $text)
    {
        Get-AzStorageBlob -Container 'test' -Context $storageContext -Blob $text|
        Rename-AzStorageBlob -NewName ''
    }

Но потом новое имя (параметр) я не могу сделать его динамичным. Как подойти к этому?

Ответы [ 2 ]

2 голосов
/ 04 ноября 2019

Если вы хотите переименовать BLOB-объект с exchangerate на ExchangeRate, для этого не существует автоматического способа.

Для этого, как упоминал Мартин, вам лучше составить карту, в которой выможно искать exchangerate -> ExchangeRate (а также для всех других имен, содержащих более одного слова).

В противном случае ваш код не знает, должна ли буква в названии нового блоба быть заглавной или нет.

0 голосов
/ 11 ноября 2019

Модифицировал мой код примерно так

##Lookup.
$hash = $null
##Hash table with keys in Lowercase and values in Uppercase
$hash = @{...}

##Renaming the files.
$file = $null
$file1 = $null
foreach($file in $text)
    {
       if($hash.Values -eq $file)
            { 
                Write-Host 'Old name' $file
                foreach($file1 in $hash.Values)
                    {
                        if($file -eq $file1)
                            {
                                Write-Host 'New name' $file1
                                Get-AzStorageBlob -Container 'test' -Context $storageContext -Blob $file| Rename-AzStorageBlob -NewName $file1 
                            }
                    }
            }      

    }

Так что это работает для меня.

...