#azure
Вопрос:
Допустим, моя учетная запись хранения содержит более 200 контейнеров, к которым мне нужно применить политику управления жизненным циклом. Мой подход изначально состоял в том, чтобы сделать */blob Name
. Однако после подробного прочтения документа MS я понял, что подстановочный знак на самом деле не будет применять политики ко всем контейнерам. Кроме того, существует ограничение по правилам для учетной записи 100/хранения с 10 префиксами в каждом.
Поэтому я решил разделить свой контейнер на партии по 10 штук и применить к ним правила. Вот что я делаю.
Разделение моего контейнера с помощью приведенной ниже функции:
function Split-Array{
param($inArray,[int]$parts,[int]$size)
if ($parts) {
$PartSize = [Math]::Ceiling($inArray.count / $parts)
}
if ($size) {
$PartSize = $size
$parts = [Math]::Ceiling($inArray.count / $size)
}
$outArray = @()
for ($i=1; $i -le $parts; $i ) {
$start = (($i-1)*$PartSize)
$end = (($i)*$PartSize) - 1
if ($end -ge $inArray.count) {$end = $inArray.count}
$outArray =,@($inArray[$start..$end])
}
return ,$outArray
}
Теперь у меня есть около 20 массивов с 10 контейнерами в каждом массиве.
Это то, что я пытаюсь сделать
$rulelist=@()
for($i=0;$i-lt $testarray.Count){
foreach($array in $testarray){
$arrayjoined = $array -join ','
$filter = New-AzStorageAccountManagementPolicyFilter -PrefixMatch $arrayjoined
$rulelist = New-AzStorageAccountManagementPolicyRule -Name "rule-$i" -Action $action -Filter $filter
$i
}
$i=999;
}
Однако, похоже, я не могу добавить объект правила в массив, так как метод недействителен.
В конце мой сценарий должен дать мне сводное правило, которое выглядит примерно так
$finalrule = $rule1,$rule2,......,$rule20
Есть ли способ достичь этого?