Командлет Отменить публикацию-AzureRmCdnEndpointContent имеет опцию -PurgeContent, однако наивное использование:
Unpublish-AzureRmCdnEndpointContent
-EndpointName $endpointName
-ProfileName $profileName
-ResourceGroupName $resourceGroupName
-PurgeContent "/*"
Кажется, очищает только файлы в корне (иначе / в пути), а не файлы вложенный. Как я могу гарантировать, что все будет очищено сразу со всех вложенных уровней?





Only appears to purge the files at the root (aka no / in the path), and not the nested files. How can I ensure that everything gets purged from all nested levels at once?
Согласно Очистить конечную точку Azure CDN, мы могли бы использовать "/*" для очистки всех папок, подпапок и файлов в конечной точке с /* в пути.
Wildcard purge: Asterisk
(*)may be used as a wildcard. Purge all folders, sub-folders and files under an endpoint with /* in the path.
Мы также можем захватить сеть с лазурного портала, когда попытаемся очистить все от конечной точки.
Мы также можем использовать скрипт для захвата остатка API во время выполнения команды.
То же самое и с тем, что мы работаем с проверкой [очистить все] от лазурного портала.
Я тестирую это с помощью следующего кода.
$endpointName = "endpoint name"
$resourceGroupName = "resource group"
$profileName = "profileName"
[string[]]$purge = @("/*")
Unpublish-AzureRmCdnEndpointContent -EndpointName $endpointName -ProfileName $profileName -ResourceGroupName $resourceGroupName -PurgeContent $purge -Debug
Примечание: на выполнение этой задачи уходит много времени.
Поэтому я попробовал другой ответ, и команда вернулась без ошибок, но файлы на самом деле не были очищены. В итоге я написал сценарий, который перечислял исходные файлы на диске и очищал их. Вы можете указать только 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 секунд на звонок.
Надеюсь, это кому-то поможет.
Я попробовал это решение, и хотя команда «прошла успешно», ни один из файлов не был очищен. Вскоре я отвечу на то, что сделал.