O cmdlet Remove-AzDataLakeGen2AclRecursive remove a ACL recursivamente no caminho especificado.
As entradas da ACL na ACL original, que tem o mesmo AccessControlType, DefaultScope e EntityId com entradas de ACL de entrada (mesmo com permissão diferente) serão removidas.
Exemplos
Exemplo 1: Remover a ACL recursivamente em um diretório raiz do sistema de arquivos
$acl = Set-AzDataLakeGen2ItemAclObject -AccessControlType user -EntityId $id -Permission r-x -DefaultScope
$acl = Set-AzDataLakeGen2ItemAclObject -AccessControlType user -EntityId $id -Permission r-x -InputObject $acl
Remove-AzDataLakeGen2AclRecursive -FileSystem "filesystem1" -Acl $acl -Context $ctx
WARNING: To find the ACL Entry to remove, will only compare AccessControlType, DefaultScope and EntityId, will omit Permission.
FailedEntries :
TotalDirectoriesSuccessfulCount : 7
TotalFilesSuccessfulCount : 5
TotalFailureCount : 0
ContinuationToken :
Este comando primeiro cria um objeto ACL com 2 entradas acl e, em seguida, remove a ACL recursivamente em um diretório raiz de um sistema de arquivos.
Exemplo 2: Remover a ACL recursivamente em um diretório
$result = Remove-AzDataLakeGen2AclRecursive -FileSystem "filesystem1" -Path "dir1" -Acl $acl -Context $ctx
WARNING: To find the ACL Entry to remove, will only compare AccessControlType, DefaultScope and EntityId, will omit Permission.
$result
FailedEntries : {dir1/dir2/file4}
TotalDirectoriesSuccessfulCount : 500
TotalFilesSuccessfulCount : 2500
TotalFailureCount : 1
ContinuationToken : VBaHi5TfyO2ai1wYTRhIL2FjbGNibjA2c3RmATAxRDVEN0UzRENFQzZCRTAvYWRsc3Rlc3QyATAxRDY2M0ZCQTZBN0JGQTkvZGlyMC9kaXIxL2ZpbGUzFgAAAA==
$result.FailedEntries
Name IsDirectory ErrorMessage
---- ----------- ------------
dir0/dir2/file4 False This request is not authorized to perform this operation using this permission.
# user need fix the failed item , then can resume with ContinuationToken
$result = Remove-AzDataLakeGen2AclRecursive -FileSystem "filesystem1" -Path "dir1" -Acl $acl -ContinuationToken $result.ContinuationToken -Context $ctx
WARNING: To find the ACL Entry to remove, will only compare AccessControlType, DefaultScope and EntityId, will omit Permission.
$result
FailedEntries :
TotalDirectoriesSuccessfulCount : 100
TotalFilesSuccessfulCount : 1000
TotalFailureCount : 0
ContinuationToken :
Este comando primeiro remove a ACL recursivamente em um diretório e falhou e, em seguida, retoma com ContinuationToken depois que o usuário corrigir o arquivo com falha.
Exemplo 3: Remover ACL recursivamente bloco por bloco
Este script removerá a ACL recursivamente no diretório chunk by chunk, com o tamanho do bloco como BatchSize * MaxBatchCount. O tamanho do bloco é 50000 neste script.
Exemplo 4: Remover ACL recursivamente em um diretório e ContinueOnFailure, em seguida, retomar de falhas uma por uma
$result = Remove-AzDataLakeGen2AclRecursive -FileSystem "filesystem1" -Path "dir1" -Acl $acl -ContinueOnFailure -Context $ctx
$result
FailedEntries : {dir0/dir1/file1, dir0/dir2/file4}
TotalDirectoriesSuccessfulCount : 100
TotalFilesSuccessfulCount : 500
TotalFailureCount : 2
ContinuationToken : VBaHi5TfyO2ai1wYTRhIL2FjbGNibjA2c3RmATAxRDVEN0UzRENFQzZCRTAvYWRsc3Rlc3QyATAxRDY2M0ZCQTZBN0JGQTkvZGlyMC9kaXIxL2ZpbGUzFgAAAA==
$result.FailedEntries
Name IsDirectory ErrorMessage
---- ----------- ------------
dir0/dir1/file1 False This request is not authorized to perform this operation using this permission.
dir0/dir2/file4 False This request is not authorized to perform this operation using this permission.
# user need fix the failed item , then can resume with ContinuationToken
foreach ($path in $result.FailedEntries.Name)
{
# user code to fix failed entry in $path
#set ACL again
Remove-AzDataLakeGen2AclRecursive -FileSystem "filesystem1" -Path $path -Acl $acl -Context $ctx
}
Este comando primeiro remove a ACL recursivamente para um diretório com ContinueOnFailure e alguns itens falharam e, em seguida, retoma os itens com falha um a um.
Parâmetros
-Acl
A lista de controle de acesso POSIX para definir recursivamente para o arquivo ou diretório.
Se o tamanho do conjunto de dados exceder o tamanho do lote, a operação será dividida em várias solicitações para que o progresso possa ser rastreado.
O tamanho do lote deve estar compreendido entre 1 e 2000.
O padrão é 2000.
Defina esse parâmetro para ignorar falhas e continuar o processamento com a operação em outras subentidades do diretório. Por padrão, a operação será encerrada rapidamente ao encontrar falhas.
Número máximo de lotes que uma única operação de controle de acesso de alteração pode executar. Se o tamanho do conjunto de dados exceder MaxBatchCount multiplicar BatchSize, o token de continuação será retornado.
O caminho no FileSystem especificado que deve alterar Acl recursivamente.
Pode ser um arquivo ou diretório.
No formato 'directory/file.txt' ou 'directory1/directory2/'.
Ignore defina esse parâmetro para alterar Acl recursivamente do diretório raiz do sistema de arquivos.
Este cmdlet suporta os parâmetros comuns: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction e -WarningVariable. Para obter mais informações, consulte about_CommonParameters.
A fonte deste conteúdo pode ser encontrada no GitHub, onde também pode criar e rever issues e pull requests. Para mais informações, consulte o nosso guia para colaboradores.