Как получить список файлов контейнера Azure?

#azure #powershell #azure-storage-account

#azure #powershell #azure-хранилище-учетная запись

Вопрос:

Я работаю над сценарием PS для составления списка всех учетных записей хранилища, который содержит файлы с измененной датой меньше, чем <X.

Я могу перечислить все контейнеры SA, это не имеет большого значения, но я не уверен, как продвинуться дальше и перечислить все файлы внутри определенного контейнера.

 $storageAccCtx = (Get-AzStorageAccount -Name acc_name -ResourceGroupName acc_rg).Context

Get-AzStorageContainer -Context $storageAccCtx
  

Я не смог найти ни одного командлета для этого.

Может кто-нибудь, пожалуйста, посоветовать, что мне использовать дальше? Спасибо.

Ответ №1:

После того, как у вас есть StorageContext, вы можете использовать приведенный ниже командлет управления хранилищем Azure, чтобы вывести список всех блоков.

 Get-AzStorageBlob -Container containerName -Context $storageAccCtx
  

Чтобы получить список всех командлетов Azure Storage Management, пожалуйста, следуйте этой документации https://learn.microsoft.com/en-us/powershell/module/az.storage/?view=azps-4.8.0

Комментарии:

1. Большое вам спасибо, проверю это.

Ответ №2:

Командлет Get-AzStorageBlob , описанный здесь, можно использовать для составления списка больших двоичных объектов в контейнере хранения. В сценарии вы можете использовать этот командлет следующим образом, чтобы вернуть все большие двоичные объекты старше определенной даты:

 $CutOffDate = Get-Date -Year 2020 -Month 10 -Day 19
$OldBlobs = @()
$StorageAccounts = Get-AzStorageAccount
foreach ($StorageAccount in $StorageAccounts) {
    $Containers = Get-AzStorageContainer -Context $StorageAccount.Context
    foreach ($Container in $Containers) {
        $ContainerBlobs = Get-AzStorageBlob -Container $Container.Name -Context $StorageAccount.Context
        $OldBlobs  = $ContainerBlobs | Where-Object { $_.LastModified -lt $CutOffDate }
    }
}
$OldBlobs
  

Комментарии:

1. Выглядит очень многообещающе, спасибо за такой полный и информативный ответ. Проверю это завтра.

2. Почему нам нужно удалять переменную на каждой итерации, мы каждый раз вызываем новую с помощью $ContainerBlobs, не так ли?

3. Это было сделано для того, чтобы гарантировать, что если Get-AzStorageBlob вернет null, то переменная не сохранит свое предыдущее значение, что в конечном итоге приведет к дублированию результатов. Я только что протестировал это, и в этом нет необходимости, поэтому я удалил эту строку