Update-AzDataLakeGen2AclRecursive
지정된 경로에서 ACL을 재귀적으로 업데이트합니다.
구문
Update-AzDataLakeGen2AclRecursive
[-FileSystem] <String>
[[-Path] <String>]
[-ContinuationToken <String>]
-Acl <PSPathAccessControlEntry[]>
[-ContinueOnFailure]
[-BatchSize <Int32>]
[-MaxBatchCount <Int32>]
[-AsJob]
[-Context <IStorageContext>]
[-DefaultProfile <IAzureContextContainer>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Description
Update-AzDataLakeGen2AclRecursive cmdlet은 지정된 경로에서 ACL을 재귀적으로 업데이트합니다. 입력 ACL은 원래 ACL을 병합합니다. AccessControlType/EntityId/DefaultScope가 동일한 ACL 항목이 있는 경우 권한을 업데이트합니다. 새 ACL 항목을 추가합니다.
예제
예제 1: 파일 시스템의 루트 직접에서 ACL 재귀적으로 업데이트
$acl = New-AzDataLakeGen2ItemAclObject -AccessControlType user -Permission rwx
$acl = New-AzDataLakeGen2ItemAclObject -AccessControlType group -Permission rw- -InputObject $acl
$acl = New-AzDataLakeGen2ItemAclObject -AccessControlType other -Permission "rw-" -InputObject $acl
Update-AzDataLakeGen2AclRecursive -FileSystem "filesystem1" -Acl $acl -Context $ctx
FailedEntries :
TotalDirectoriesSuccessfulCount : 7
TotalFilesSuccessfulCount : 5
TotalFailureCount : 0
ContinuationToken :
이 명령은 먼저 3개의 acl 항목이 있는 ACL 개체를 만든 다음 파일 시스템의 루트 디렉터리에서 ACL을 재귀적으로 업데이트합니다.
예제 2: 디렉터리에서 ACL을 재귀적으로 업데이트하고 ContinuationToken을 사용하여 실패에서 다시 시작
$result = Update-AzDataLakeGen2AclRecursive -FileSystem "filesystem1" -Path "dir1" -Acl $acl -Context $ctx
$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 = Update-AzDataLakeGen2AclRecursive -FileSystem "filesystem1" -Path "dir1" -Acl $acl -ContinuationToken $result.ContinuationToken -Context $ctx
$result
FailedEntries :
TotalDirectoriesSuccessfulCount : 100
TotalFilesSuccessfulCount : 1000
TotalFailureCount : 0
ContinuationToken :
이 명령은 먼저 ACL을 디렉터리로 재귀적으로 업데이트하고 실패한 다음, 사용자가 실패한 파일을 수정한 후 ContinuationToken으로 다시 시작합니다.
예제 3: 청크별로 ACL 재귀적으로 청크 업데이트
$ContinueOnFailure = $true # Set it to $false if want to terminate the operation quickly on encountering failures
$token = $null
$TotalDirectoriesSuccess = 0
$TotalFilesSuccess = 0
$totalFailure = 0
$FailedEntries = New-Object System.Collections.Generic.List[System.Object]
do
{
if ($ContinueOnFailure)
{
$result = Update-AzDataLakeGen2AclRecursive -FileSystem "filesystem1" -Path "dir1" -Acl $acl -BatchSize 100 -MaxBatchCount 50 -ContinuationToken $token -Context $ctx -ContinueOnFailure
}
else
{
$result = Update-AzDataLakeGen2AclRecursive -FileSystem "filesystem1" -Path "dir1" -Acl $acl -BatchSize 100 -MaxBatchCount 50 -ContinuationToken $token -Context $ctx
}
# echo $result
$TotalFilesSuccess += $result.TotalFilesSuccessfulCount
$TotalDirectoriesSuccess += $result.TotalDirectoriesSuccessfulCount
$totalFailure += $result.TotalFailureCount
$FailedEntries += $result.FailedEntries
$token = $result.ContinuationToken
}while (($null -ne $token) -and (($ContinueOnFailure) -or ($result.TotalFailureCount -eq 0)))
echo ""
echo "[Result Summary]"
echo "TotalDirectoriesSuccessfulCount: `t$($TotalDirectoriesSuccess)"
echo "TotalFilesSuccessfulCount: `t`t`t$($TotalFilesSuccess)"
echo "TotalFailureCount: `t`t`t`t`t$($totalFailure)"
echo "ContinuationToken: `t`t`t`t`t$($token)"
echo "FailedEntries:"$($FailedEntries | ft)
이 스크립트는 청크 크기를 BatchSize * MaxBatchCount로 사용하여 디렉터리 청크에서 재귀적으로 ACL을 업데이트합니다. 이 스크립트에서 청크 크기는 5000입니다.
예제 4: 디렉터리 및 ContinueOnFailure에서 ACL을 재귀적으로 업데이트한 다음 오류에서 하나씩 다시 시작합니다.
$result = Update-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
Set-AzDataLakeGen2AclRecursive -FileSystem "filesystem1" -Path $path -Acl $acl -Context $ctx
}
이 명령은 먼저 ContinueOnFailure가 있는 디렉터리로 ACL을 재귀적으로 업데이트하고 일부 항목이 실패하면 실패한 항목을 하나씩 다시 시작합니다.
매개 변수
-Acl
파일 또는 디렉터리에 대해 재귀적으로 설정할 POSIX 액세스 제어 목록입니다.
형식: | PSPathAccessControlEntry[] |
Position: | Named |
Default value: | None |
필수: | True |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-AsJob
백그라운드에서 cmdlet 실행
형식: | SwitchParameter |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-BatchSize
데이터 집합 크기가 일괄 처리 크기를 초과하면 작업을 여러 요청으로 분할하여 진행률을 추적할 수 있습니다. 일괄 처리 크기는 1에서 2000 사이여야 합니다. 기본값은 2000입니다.
형식: | Int32 |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-Confirm
cmdlet을 실행하기 전에 확인 메시지가 표시됩니다.
형식: | SwitchParameter |
별칭: | cf |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-Context
Azure Storage 컨텍스트 개체
형식: | IStorageContext |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | True |
와일드카드 문자 허용: | False |
-ContinuationToken
연속 토큰입니다.
형식: | String |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-ContinueOnFailure
이 매개 변수를 설정하여 오류를 무시하고 디렉터리의 다른 하위 엔터티에 대한 작업을 계속 처리합니다. 기본적으로 작업이 실패할 때 신속하게 종료됩니다.
형식: | SwitchParameter |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-DefaultProfile
Azure와의 통신에 사용되는 자격 증명, 계정, 테넌트 및 구독입니다.
형식: | IAzureContextContainer |
별칭: | AzureRmContext, AzureCredential |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-FileSystem
FileSystem 이름
형식: | String |
Position: | 0 |
Default value: | None |
필수: | True |
파이프라인 입력 허용: | True |
와일드카드 문자 허용: | False |
-MaxBatchCount
단일 변경 Access Control 작업을 실행할 수 있는 최대 일괄 처리 수입니다. 데이터 집합 크기가 MaxBatchCount multiply BatchSize를 초과하면 연속 토큰이 반환됩니다.
형식: | Int32 |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-Path
Acl을 재귀적으로 변경할 지정된 FileSystem의 경로입니다. 파일 또는 디렉터리일 수 있습니다. 'directory/file.txt' 또는 'directory1/directory2/' 형식입니다. 이 매개 변수를 건너뛰어 Filesystem의 루트 디렉터리에서 Acl을 재귀적으로 변경합니다.
형식: | String |
Position: | 1 |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | True |
와일드카드 문자 허용: | False |
-WhatIf
cmdlet이 실행될 경우 결과 동작을 표시합니다. cmdlet이 실행되지 않습니다.
형식: | SwitchParameter |
별칭: | wi |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |