Как полностью очистить Azure CDN через PowerShell? - PullRequest
0 голосов
/ 29 мая 2018

Командлет Unpublish-AzureRmCdnEndpointContent имеет опцию -PurgeContent, однако наивное использование:

Unpublish-AzureRmCdnEndpointContent 
  -EndpointName $endpointName 
  -ProfileName $profileName 
  -ResourceGroupName $resourceGroupName 
  -PurgeContent "/*"

Появляется только для очистки файлов в корневом каталоге (aka no /).в пути), а не вложенные файлы .Как я могу гарантировать, что все будет очищено сразу от всех вложенных уровней?

Ответы [ 2 ]

0 голосов
/ 25 января 2019

Итак, я попробовал другой ответ, и команда вернулась без ошибок, но файлы на самом деле не были удалены.В итоге я написал скрипт, который перечислял исходные файлы на диске и очищал их.Вы можете указать только 50 сразу, поэтому мне пришлось адаптировать этот ответ:

Powershell разбивает длинный массив на массив с длиной N в одной строке?

Это немного специфично для того, что мне было нужно, поскольку на предыдущем шаге нужно сначала использовать azcopy, чтобы поместить файлы в хранилище ...

$currentDirectory = get-location | select -ExpandProperty Path
$files = ls ".\" -Recurse | select -ExpandProperty FullName | %{ 
    $_.Replace($currentDirectory ,"\") } | %{ $_.Replace("\", "/") }

$counter = [pscustomobject] @{ Value = 0 }
$groups = $files | Group-Object -Property { [math]::Floor($counter.Value++ / 50) }

Import-Module azurerm

$profileName = "yourprofile"
$endpoint = "yourendpoint"
$profile = Get-AzureRmCdnProfile -ProfileName $profileName

$groups | %{
    Unpublish-AzureRmCdnEndpointContent `
        -EndpointName $endpoint `
        -ProfileName $profileName `
        -ResourceGroupName $profile.resourceGroupName `
        -PurgeContent $_.Group
}

В зависимости от того, сколько у вас файлов, вы можетехочу использовать Start-Job, чтобы продвинуть его.Мне это пока не нужно, поскольку на звонок приходится около 5-10 секунд.

Надеюсь, это кому-нибудь поможет.

0 голосов
/ 30 мая 2018

Появляется только для очистки файлов в корне (иначе нет / в пути), а не вложенных файлов.Как я могу гарантировать, что все будет очищено сразу от всех вложенных уровней?

В соответствии с Очистить конечную точку CDN Azure , мы можем использовать "/*" для очистки всех папок, вложенных-папки и файлы в конечной точке с /* в пути.

Чистка с подстановочными знаками: звездочка (*) может использоваться в качестве подстановочного знака.Очистите все папки, подпапки и файлы в конечной точке, указав / * в пути.

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

enter image description here

Мы также могли бы использовать fiddler для захвата остатка API во время выполнения команды.

Это то же самое, что мы выполняем проверку [очистить все] от портала Azure.

enter image description here

Я проверяю это с помощью следующего кода.

$endpointName = "endpoint name"
$resourceGroupName = "resource group"
$profileName = "profileName"
[string[]]$purge = @("/*")  
Unpublish-AzureRmCdnEndpointContent -EndpointName $endpointName -ProfileName $profileName -ResourceGroupName $resourceGroupName -PurgeContent $purge -Debug

Примечание: выполнение этой задачи занимает много времени.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...