Polecenie cmdlet Remove-AzDataLakeGen2AclRecursive usuwa listę ACL rekursywnie na określonej ścieżce.
Wpisy listy ACL w oryginalnej liście ACL, które mają ten sam typ AccessControlType, DefaultScope i EntityId z wejściowymi wpisami listy ACL (nawet z różnymi uprawnieniami) zostaną usunięte lbe.
Przykłady
Przykład 1. Usuwanie listy ACL rekursywnie w katalogu głównym systemu plików
$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 :
To polecenie najpierw tworzy obiekt listy ACL z 2 wpisami listy acl, a następnie usuwa listę ACL rekursywnie w katalogu głównym systemu plików.
Przykład 2: Rekursywne usuwanie listy ACL w katalogu
$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 :
To polecenie najpierw usuwa listę ACL rekursywnie w katalogu i zakończyło się niepowodzeniem, a następnie wznawia działanie funkcji ContinuationToken po usunięciu przez użytkownika pliku, który zakończył się niepowodzeniem.
Przykład 3. Usuwanie cyklicznie fragmentu listy ACL według fragmentu
Ten skrypt usunie listę ACL rekursywnie na fragmentach katalogu według fragmentu z rozmiarem fragmentu jako BatchSize * MaxBatchCount. Rozmiar fragmentu to 50000 w tym skrycie.
Przykład 4: Usuwanie listy ACL rekursywnie w katalogu i ContinueOnFailure, a następnie wznawianie z awarii jeden po jednym
$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
}
To polecenie najpierw usuwa listę ACL rekursywnie do katalogu z ciągiem ContinueOnFailure, a niektóre elementy zakończyły się niepowodzeniem, a następnie wznów elementy, które zakończyły się niepowodzeniem.
Parametry
-Acl
Lista kontroli dostępu POSIX, która ma być ustawiana rekursywnie dla pliku lub katalogu.
Jeśli rozmiar zestawu danych przekracza rozmiar partii, operacja zostanie podzielona na wiele żądań, aby można było śledzić postęp.
Rozmiar partii powinien należeć do zakresu od 1 do 2000.
Wartość domyślna to 2000.
Ustaw ten parametr, aby ignorować błędy i kontynuować przetwarzanie przy użyciu operacji na innych podrzędnych jednostkach katalogu. Domyślna operacja zakończy się szybko po napotkaniu błędów.
Maksymalna liczba partii, które można wykonać przy pojedynczej zmianie operacji kontroli dostępu. Jeśli rozmiar zestawu danych przekracza wartość MaxBatchCount pomnożoną wartość BatchSize, zostanie zwrócony token kontynuacji.
Ścieżka w określonym systemie plików, która ma być zmieniana rekursywnie.
Może być plikiem lub katalogiem.
W formacie "directory/file.txt" lub "directory1/directory2/".
Pomiń ustawienie tego parametru, aby zmienić listę Acl rekursywnie z katalogu głównego systemu plików.
To polecenie cmdlet obsługuje typowe parametry: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction i -WarningVariable. Aby uzyskać więcej informacji, zobacz about_CommonParameters.
Źródło tej treści można znaleźć na GitHubie, gdzie można także tworzyć i przeglądać problemy oraz pull requesty. Więcej informacji znajdziesz w naszym przewodniku dla współautorów.