#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, то переменная не сохранит свое предыдущее значение, что в конечном итоге приведет к дублированию результатов. Я только что протестировал это, и в этом нет необходимости, поэтому я удалил эту строку